拖放 xcopy
Drag and Drop xcopy
我需要一个批处理脚本,我可以在其中放置文件或目录,然后将它们复制到我的 NAS。我想将文件或文件夹拖到批处理上,然后它就完成了他的工作。现有文件或目录应该被覆盖,我不想得到一些关于覆盖或某事的问题。别的。此外,我想在此之后在 windows 的“发送到”对话框中调用此脚本。希望你能帮上忙:)
我最大的问题是拖放功能。
谢谢
PS:
我在互联网上找到的用于拖放的代码,但我不明白 -.-
@echo off & setlocal
set "Ein=meinedatei.txt"
set "Aus=meinedatei.dat"
if exist "%Aus%" del "%Aus%"
set Zuletzt=-
for /f "tokens=2" %%i in ('findstr ".rst .pop" "%Ein%"^|sort') do call :ProcessLink "%%~i"
goto :eof
:ProcessLink
if %1==%Zuletzt% goto :eof
set Zuletzt="%~1"
(echo /%~1)>>"%Aus%"
@echo off
:a
cls
set /p file=::drag and drop file you want to copy here::
if not exist "%file%" echo file does not exist && pause && goto :a
set /p dest=Destination path/folder:
if not exist "%dest%" echo path does not exist && pause && goto :a
copy /y %file% %dest%
if %errorlevel%==0 echo copy successful && pause && goto :a
echo copy failed.
pause
goto :a
此外,如果您想在发送到菜单中轻松包含 path/drive/folder:
1)打开cmd并输入:start %appdata%\microsoft\windows\sendto
2) 右键单击文件夹内部并 select 新建并单击快捷方式并在对话框中键入项目的位置。
下一个脚本显示批参数处理;允许通过
提供最多 255 个参数
copy & paste
(select一些文件和文件夹,右击任意selected,选择复制。然后右击批处理文件,选择粘贴),或
drag & drop
(步骤同上),或
- 使用
sendto
菜单,如果您已将 .bat
文件(或其快捷方式)放入 shell:sendto
文件夹,或者
- 线路参数,例如
drag-drop_30401166.bat files "b c"
.
您可以用适合您要求的代码片段替换 echo folder
、echo file
和 echo unknown
行(例如 xcopy
、copy
、robocopy
等)。
@echo OFF >NUL
SETLOCAL enableextensions
echo(
echo before any shift [%~0] [%~1] [%~2] [%~3] [%~4]
echo all %%* = %*
echo(
set /A "ii=1"
:loopfor
If exist "%~1\" (
echo folder %%%ii% = %1
) else (
If exist "%~1" (
echo file %%%ii% = %1
) else (
echo unknown %%%ii% = %1
)
)
SHIFT
set /A "ii+=1"
if not [%1]==[] goto :loopfor
echo(
shift
echo after all shifts [%~0] [%~1] [%~2] [%~3] [%~4]
echo all %%* = %*
pause
goto :eof
输出样本:
before any shift [D:\bat\Whosebug\drag-drop_30401166.bat] [D:\bat\runcmd.vb
s] [D:\bat\crlferror.bat] [D:\bat\UnASCII Names] [D:\bat\Unusual Names]
all %* = D:\bat\runcmd.vbs D:\bat\crlferror.bat "D:\bat\UnASCII Names" "D:\bat
\Unusual Names"
file %1 = D:\bat\runcmd.vbs
file %2 = D:\bat\crlferror.bat
folder %3 = "D:\bat\UnASCII Names"
folder %4 = "D:\bat\Unusual Names"
after all shifts [] [] [] [] []
all %* = D:\bat\runcmd.vbs D:\bat\crlferror.bat "D:\bat\UnASCII Names" "D:\bat
\Unusual Names"
Press any key to continue . . .
输出(命令行中提供的参数):
==>drag-drop_30401166.bat files "b c"
before any shift [drag-drop_30401166.bat] [files] [b c] [] []
all %* = files "b c"
folder %1 = files
unknown %2 = "b c"
after all shifts [] [] [] [] []
all %* = files "b c"
Press any key to continue . . .
资源(必读):
我需要一个批处理脚本,我可以在其中放置文件或目录,然后将它们复制到我的 NAS。我想将文件或文件夹拖到批处理上,然后它就完成了他的工作。现有文件或目录应该被覆盖,我不想得到一些关于覆盖或某事的问题。别的。此外,我想在此之后在 windows 的“发送到”对话框中调用此脚本。希望你能帮上忙:)
我最大的问题是拖放功能。
谢谢
PS: 我在互联网上找到的用于拖放的代码,但我不明白 -.-
@echo off & setlocal
set "Ein=meinedatei.txt"
set "Aus=meinedatei.dat"
if exist "%Aus%" del "%Aus%"
set Zuletzt=-
for /f "tokens=2" %%i in ('findstr ".rst .pop" "%Ein%"^|sort') do call :ProcessLink "%%~i"
goto :eof
:ProcessLink
if %1==%Zuletzt% goto :eof
set Zuletzt="%~1"
(echo /%~1)>>"%Aus%"
@echo off
:a
cls
set /p file=::drag and drop file you want to copy here::
if not exist "%file%" echo file does not exist && pause && goto :a
set /p dest=Destination path/folder:
if not exist "%dest%" echo path does not exist && pause && goto :a
copy /y %file% %dest%
if %errorlevel%==0 echo copy successful && pause && goto :a
echo copy failed.
pause
goto :a
此外,如果您想在发送到菜单中轻松包含 path/drive/folder:
1)打开cmd并输入:start %appdata%\microsoft\windows\sendto
2) 右键单击文件夹内部并 select 新建并单击快捷方式并在对话框中键入项目的位置。
下一个脚本显示批参数处理;允许通过
提供最多 255 个参数copy & paste
(select一些文件和文件夹,右击任意selected,选择复制。然后右击批处理文件,选择粘贴),或drag & drop
(步骤同上),或- 使用
sendto
菜单,如果您已将.bat
文件(或其快捷方式)放入shell:sendto
文件夹,或者 - 线路参数,例如
drag-drop_30401166.bat files "b c"
.
您可以用适合您要求的代码片段替换 echo folder
、echo file
和 echo unknown
行(例如 xcopy
、copy
、robocopy
等)。
@echo OFF >NUL
SETLOCAL enableextensions
echo(
echo before any shift [%~0] [%~1] [%~2] [%~3] [%~4]
echo all %%* = %*
echo(
set /A "ii=1"
:loopfor
If exist "%~1\" (
echo folder %%%ii% = %1
) else (
If exist "%~1" (
echo file %%%ii% = %1
) else (
echo unknown %%%ii% = %1
)
)
SHIFT
set /A "ii+=1"
if not [%1]==[] goto :loopfor
echo(
shift
echo after all shifts [%~0] [%~1] [%~2] [%~3] [%~4]
echo all %%* = %*
pause
goto :eof
输出样本:
before any shift [D:\bat\Whosebug\drag-drop_30401166.bat] [D:\bat\runcmd.vb
s] [D:\bat\crlferror.bat] [D:\bat\UnASCII Names] [D:\bat\Unusual Names]
all %* = D:\bat\runcmd.vbs D:\bat\crlferror.bat "D:\bat\UnASCII Names" "D:\bat
\Unusual Names"
file %1 = D:\bat\runcmd.vbs
file %2 = D:\bat\crlferror.bat
folder %3 = "D:\bat\UnASCII Names"
folder %4 = "D:\bat\Unusual Names"
after all shifts [] [] [] [] []
all %* = D:\bat\runcmd.vbs D:\bat\crlferror.bat "D:\bat\UnASCII Names" "D:\bat
\Unusual Names"
Press any key to continue . . .
输出(命令行中提供的参数):
==>drag-drop_30401166.bat files "b c"
before any shift [drag-drop_30401166.bat] [files] [b c] [] []
all %* = files "b c"
folder %1 = files
unknown %2 = "b c"
after all shifts [] [] [] [] []
all %* = files "b c"
Press any key to continue . . .
资源(必读):