使用 xcopy 通过 *.extension 复制多个文件
Copying multiple files by *.extension with xcopy
我正在制作一个批处理脚本,以将所有 .doc
、.pdf
、.xls
等从磁盘复制到 pendrive。
我当前的代码如下:
@echo off
Title ""
::All Docs
XCOPY C:\*.doc W:\xdatabase /C /S /I /F /H > W:\database\XC\AllInf.txt
::All PDFs
XCOPY C:\*.pdf W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All WRI
XCOPY C:\*.wri W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All TXT
XCOPY C:\*.txt W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All PPT
XCOPY C:\*.ppt W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All XLS
XCOPY C:\*.xls W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
问题是:如何添加更多扩展,同时避免代码中的所有重复?
在所有编程语言中始终如此:如果您必须连续多次执行某件事,请使用循环。
@echo off
Title ""
for %%e in (doc pdf wri txt ppt xls) do (
XCOPY "C:\*.%%e" W:\xdatabase /C /S /I /F /H > W:\database\XC\AllInf.txt
)
for
循环在批处理脚本中可能很棘手。这里有一个方便的指南:http://ss64.com/nt/for.html
这在一行上有效,不需要脚本文件。需要单百分号,而不是双百分号:
for %f in (xlsm xlsb) do xcopy SourceDir\*.%f DestinationDir\ /S
或者你的情况
for %e in (doc pdf xls wri txt ppt xls) do XCOPY C:\*.%e W:\xdatabase /C /S /I /F /H > W:\database\XC\AllInf.txt
根据我的测试,robocopy支持无循环的多个扩展。
ROBOCOPY C:\ W:\xdatabase /S *.doc *.pdf *.xls *.wri *.txt *.ppt *.xls
然而,根据我的经验,xcopy 似乎在 speed 上击败了 robocopy,即使有多个扩展名,但我只测试了非常小的一批文件。
我正在制作一个批处理脚本,以将所有 .doc
、.pdf
、.xls
等从磁盘复制到 pendrive。
我当前的代码如下:
@echo off
Title ""
::All Docs
XCOPY C:\*.doc W:\xdatabase /C /S /I /F /H > W:\database\XC\AllInf.txt
::All PDFs
XCOPY C:\*.pdf W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All WRI
XCOPY C:\*.wri W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All TXT
XCOPY C:\*.txt W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All PPT
XCOPY C:\*.ppt W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
::All XLS
XCOPY C:\*.xls W:\xdatabase /C /S /I /F /H >> W:\database\XC\AllInf.txt
问题是:如何添加更多扩展,同时避免代码中的所有重复?
在所有编程语言中始终如此:如果您必须连续多次执行某件事,请使用循环。
@echo off
Title ""
for %%e in (doc pdf wri txt ppt xls) do (
XCOPY "C:\*.%%e" W:\xdatabase /C /S /I /F /H > W:\database\XC\AllInf.txt
)
for
循环在批处理脚本中可能很棘手。这里有一个方便的指南:http://ss64.com/nt/for.html
这在一行上有效,不需要脚本文件。需要单百分号,而不是双百分号:
for %f in (xlsm xlsb) do xcopy SourceDir\*.%f DestinationDir\ /S
或者你的情况
for %e in (doc pdf xls wri txt ppt xls) do XCOPY C:\*.%e W:\xdatabase /C /S /I /F /H > W:\database\XC\AllInf.txt
根据我的测试,robocopy支持无循环的多个扩展。
ROBOCOPY C:\ W:\xdatabase /S *.doc *.pdf *.xls *.wri *.txt *.ppt *.xls
然而,根据我的经验,xcopy 似乎在 speed 上击败了 robocopy,即使有多个扩展名,但我只测试了非常小的一批文件。