想要使用 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!"
)

当然,您不再需要 xcopys 参数 /s/e