【问题标题】:Want to copy document and different kind of file with Batch想用批处理复制文件和不同类型的文件
【发布时间】:2016-01-29 05:38:47
【问题描述】:

我正在尝试通过批处理文件单击复制 .pdf .docx.zip 文件。它工作得很好,但问题是复制数据需要很长时间。例如,如果我想复制 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 和特定路径,并在一行代码中复制文件,就像在第一次搜索中一样那么..

如果你们能帮我解决这个问题,那将非常有帮助。

编辑过一个

@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

【问题讨论】:

    标签: windows batch-file cmd copy xcopy


    【解决方案1】:

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

    @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

    【讨论】:

    • 我尝试运行此代码,但双击后出现 cmd,一秒钟后关闭,没有任何内容被复制..
    • 测试时不要双击启动批处理文件。从 cmd 窗口启动它以查看任何错误消息。删除@echo off 也可以帮助您查看发生错误的位置。当然,没有任何内容被复制(参见%backupcmd%),当输出满足您时,将其替换为实际的复制命令。
    • 我已经编辑了代码并在上面更新了它,也许我犯了一个错误或者如果你能看到它并指出错误会有所帮助..当我尝试运行时它来自 cmd 它说 invalid drive specification
    • 抱歉,我的代码中有一些额外的%。不知道,他们是从哪里来的。查看我编辑的代码。
    • @Ebadkhan 将反斜杠放在目标目的地的末尾,它将停止询问您它是文件还是目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多