想要使用 Batch 复制文档和不同类型的文件
Want to copy document and different kind of file with Batch
我正在尝试复制 .pdf .docx 和 .zip 文件通过批处理文件单击。它工作完美,但问题是复制 data.For 示例需要很多时间,如果我想复制 Drive D 的扩展文件,批处理文件将 运行 首先找到 .pdf,然后在整个驱动器中搜索 .pdf,然后再搜索 。 docx 文件。如果它找到 .pdf 文件,我想在一个命令中执行此操作,而不是如果是 .docx 则复制它,而不是在一次搜索中执行相同的操作。
这里是代码
@echo off
:: variables
/min
/w
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
echo off
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.pdf" "%drive%\Personal\PICS\Wedding\Barat\MOVIEP"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.docx" "%drive%\Personal\PICS\Wedding\Walima\MOVIED"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.doc" "%drive%\Personal\PICS\Wedding\Walima\MOVIED"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.zip" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.rar" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.pdf" "%drive%\Personal\PICS\Wedding\Barat\MOVIEP3"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.docx" "%drive%\Personal\PICS\Wedding\Walima\MOVIED3"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.doc" "%drive%\Personal\PICS\Wedding\Walima\MOVIED3"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.zip" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.rar" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
@echo off
cls
我想做一些事情,比如它会转到驱动器 E 和特定路径,并在一行代码中复制文件,就像在第一次搜索中一样,如果找到它会复制 .pdf 否则查找是否有 docx 是的然后复制..
如果你们能帮我解决这个问题,那将是非常有帮助的。
已编辑
@echo off
setlocal enabledelayedexpansion
set backupcmd=echo
set drive=N:
SET odrive=%odrive:~0,2%
echo off
set backupcmd=xcopy /c /d /h /i /r /y
set "files=C:\*.pdf C:\*.doc C:\*.docx C:\*.zip C:\*.rar"
for /f "delims=" %%i in ('dir /s /b %files%') do (
if "%%~xi"==".pdf" set "dest=D"
if "%%~xi"==".doc" set "dest=D"
if "%%~xi"==".docx" set "dest=D"
if "%%~xi"==".zip" set "dest=Z"
if "%%~xi"==".rar" set "dest=Z"
if "%%~di"=="C:" if "!dest!"=="Z" set "dest=!dest!3"
%backupcmd% "%%i" "%drive%\Personal\PICS\Wedding\Barat\MOVIE!dest!"
)
@echo off
cls
这需要一些时间才能开始复制,因为它会在处理文件之前构建完整的文件列表。但它只扫描一次磁盘。
@echo off
setlocal enabledelayedexpansion
set backupcmd=echo
set drive=N:
set "files=C:\*.pdf C:\*.doc C:\*.docx C:\*.zip C:\*.rar"
set "files=%files% E:\*.pdf E:\*.doc E:\*.docx E:\*.zip E:\*.rar"
for /f "delims=" %%i in ('dir /s /b %files%') do (
if "%%~xi"==".pdf" set "dest=D"
if "%%~xi"==".doc" set "dest=D"
if "%%~xi"==".docx" set "dest=D"
if "%%~xi"==".zip" set "dest=Z"
if "%%~xi"==".rar" set "dest=Z"
if "%%~di"=="C:" if "!dest!"=="Z" set "dest=!dest!3"
%backupcmd% "%%i" "%drive%\Personal\PICS\Wedding\Barat\MOVIE!dest!"
)
当然,您不再需要 xcopy
s 参数 /s
和 /e
。
我正在尝试复制 .pdf .docx 和 .zip 文件通过批处理文件单击。它工作完美,但问题是复制 data.For 示例需要很多时间,如果我想复制 Drive D 的扩展文件,批处理文件将 运行 首先找到 .pdf,然后在整个驱动器中搜索 .pdf,然后再搜索 。 docx 文件。如果它找到 .pdf 文件,我想在一个命令中执行此操作,而不是如果是 .docx 则复制它,而不是在一次搜索中执行相同的操作。
这里是代码
@echo off
:: variables
/min
/w
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
echo off
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.pdf" "%drive%\Personal\PICS\Wedding\Barat\MOVIEP"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.docx" "%drive%\Personal\PICS\Wedding\Walima\MOVIED"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.doc" "%drive%\Personal\PICS\Wedding\Walima\MOVIED"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.zip" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
%backupcmd% "E:\MIEMS\Dropbox\Bahria\*.rar" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.pdf" "%drive%\Personal\PICS\Wedding\Barat\MOVIEP3"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.docx" "%drive%\Personal\PICS\Wedding\Walima\MOVIED3"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.doc" "%drive%\Personal\PICS\Wedding\Walima\MOVIED3"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.zip" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
%backupcmd% "C:\Users\%USERNAME%\MIEMS\Dropbox\Bahria\*.rar" "%drive%\Personal\PICS\Wedding\Mehndi\MOVIEZ"
@echo off
cls
我想做一些事情,比如它会转到驱动器 E 和特定路径,并在一行代码中复制文件,就像在第一次搜索中一样,如果找到它会复制 .pdf 否则查找是否有 docx 是的然后复制..
如果你们能帮我解决这个问题,那将是非常有帮助的。
已编辑
@echo off
setlocal enabledelayedexpansion
set backupcmd=echo
set drive=N:
SET odrive=%odrive:~0,2%
echo off
set backupcmd=xcopy /c /d /h /i /r /y
set "files=C:\*.pdf C:\*.doc C:\*.docx C:\*.zip C:\*.rar"
for /f "delims=" %%i in ('dir /s /b %files%') do (
if "%%~xi"==".pdf" set "dest=D"
if "%%~xi"==".doc" set "dest=D"
if "%%~xi"==".docx" set "dest=D"
if "%%~xi"==".zip" set "dest=Z"
if "%%~xi"==".rar" set "dest=Z"
if "%%~di"=="C:" if "!dest!"=="Z" set "dest=!dest!3"
%backupcmd% "%%i" "%drive%\Personal\PICS\Wedding\Barat\MOVIE!dest!"
)
@echo off
cls
这需要一些时间才能开始复制,因为它会在处理文件之前构建完整的文件列表。但它只扫描一次磁盘。
@echo off
setlocal enabledelayedexpansion
set backupcmd=echo
set drive=N:
set "files=C:\*.pdf C:\*.doc C:\*.docx C:\*.zip C:\*.rar"
set "files=%files% E:\*.pdf E:\*.doc E:\*.docx E:\*.zip E:\*.rar"
for /f "delims=" %%i in ('dir /s /b %files%') do (
if "%%~xi"==".pdf" set "dest=D"
if "%%~xi"==".doc" set "dest=D"
if "%%~xi"==".docx" set "dest=D"
if "%%~xi"==".zip" set "dest=Z"
if "%%~xi"==".rar" set "dest=Z"
if "%%~di"=="C:" if "!dest!"=="Z" set "dest=!dest!3"
%backupcmd% "%%i" "%drive%\Personal\PICS\Wedding\Barat\MOVIE!dest!"
)
当然,您不再需要 xcopy
s 参数 /s
和 /e
。