首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要用批处理复制文档和不同类型的文件。

要用批处理复制文档和不同类型的文件。
EN

Stack Overflow用户
提问于 2015-10-29 07:22:28
回答 1查看 291关注 0票数 0

我试图通过批处理文件一次单击复制.pdf .docx.zip文件。它工作得很完美,但问题是复制data.For示例需要很长时间,如果我想复制驱动器D的那些扩展名文件,批处理文件将首先运行以查找.pdf,而不是在搜索整个驱动器以查找.pdf之后,而不是去搜索.docx文件。如果它找到.pdf文件,那么我想在一个命令中这样做,而不是复制它,如果.docx比在一次搜索中做同样的操作。

这里是代码

代码语言:javascript
复制
@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存在,是的,复制它。

如果你们能帮我解决这个问题,会很有帮助的。

编辑了一个

代码语言:javascript
复制
@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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-29 08:18:32

这需要一段时间才能开始复制,因为它在处理文件之前构建了完整的文件列表。但它只扫描了一次磁盘。

代码语言:javascript
复制
@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/e了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33408141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档