batch file将具有特定扩展名的文件从多个目录复制到一个目录
我是一个新手,所以忍受我…
我正在尝试使用batch file将所有分布在一个主目录的多个子目录中的.doc
文件复制到另一个目录中。 我已经设法从这些目录中得到我想要使用的所有文件(有数百个)的filelist.txt
:
"C:\Main directory\sub directory" dir /b /s *.doc > "C:\Main directory\sub directory\filelist.txt"
我会用什么脚本将这些文件复制到一个目录中? 我可以使用一些实际从filelist.txt
抓取这些文件名的代码,并且可以使用它们吗?
作为参考,我看了下面的问题,因为它看起来像是在做我想做的事情,但是这对我没有帮助。
使用xcopy将文件从多个目录复制到一个目录
另外,我真的很想理解这个概念,所以请分解代码,告诉我每个项目是做什么的,或者至less包括一个链接来解释它。
在batch file解决scheme中
for /R c:\source %%f in (*.xml) do copy %%fx:\destination\
代码就这样工作;
对于目录c:\source
每个文件和匹配模式(\*.xml)
子目录/R
,将文件名放在variables%%f
,然后对每个文件拷贝文件copy %%f
到目标x:\\destination\\
只是在我的Windows XP电脑上进行了testing,它对我来说就像是一种享受。 但是我把它input命令提示符,所以我使用了单个的%f
variables名称版本,如上面链接的问题所述。
只需使用带有recursion选项的XCOPY命令即可
xcopy c:\*.doc k:\mybackup /sy
/ s将使其“recursion”
像这样的事情是为什么我切换到Powershell。 试试看,这很有趣:
Get-ChildItem -Recurse -Include *.doc | % { Copy-Item $_.FullName -destination x:\destination }
布兰登,简短而甜蜜。 也灵活。
set dSource=C:\Main directory\sub directory set dTarget=D:\Documents set fType=*.doc for /f "delims=" %%f in ('dir /ad /b /s "%dSource%\%fType%"') do ( copy /V "%%f" "%dTarget%\" 2>nul )
希望这可以帮助。
我会添加一些检查后复制(使用'||'),但我不知道如何“复制/ V”遇到错误时作出反应。
你可能想试试这个:
copy /V "%%f" "%dTarget%\" 2>nul|| echo En error occured copying "%%F".&& exit /b 1
作为复制行。 让我知道,如果你从中得到的东西(没有位置testing复制失败atm ..)
你也可以使用VBScript
Set objFS = CreateObject("Scripting.FileSystemObject") strFolder = "c:\test" strDestination = "c:\tmp\" Set objFolder = objFS.GetFolder(strFolder) Go(objFolder) Sub Go(objDIR) If objDIR <> "\System Volume Information" Then For Each eFolder in objDIR.SubFolders Go eFolder Next For Each strFile In objDIR.Files strFileName = strFile.Name strExtension = objFS.GetExtensionName(strFile) If strExtension = "doc" Then objFS.CopyFile strFile , strDestination & strFileName End If Next End If End Sub
保存为mycopy.vbs和命令行
c:\test> cscript /nologo mycopy.vbs