我创建了一个批处理文件,该文件允许将文件从文件夹移动到另一个文件夹。 我的问题是,我的bat文件还应该浏览源子文件夹,以查找具有特定模式的文件。
实际上:
@ECHO ON
SET SourceDir=C:\Users\me\Documents\source
SET CopyDir=C:\Users\me\Documents\repository
SET FilePatterName=*pattern*.pdf
FOR %%A IN ("%SourceDir%\%FilePatterName%") DO (
ECHO F | XCOPY /Y /F "%%~A" "%CopyDir%\"
DEL /Q /F "%%~A"
)
GOTO EOF
例如:在我的源文件夹中,如果我在sub1中有sub1,sub2,sub3文件夹和sub1-1文件夹,我想检查每个文件夹,检查文件并移动它们,而无需在存储库中创建任何文件夹
答案 0 :(得分:0)
根据我的评论,使用for /r
它将遍历目录:
for /R "%SourceDir%" %%A in ("%FilePatterName%") do...
如果感觉丑陋,然后先将其推送到目录,然后从那里递归搜索:
@Echo off
Set "SourceDir=C:\Users\me\Documents\source"
Set "CopyDir=C:\Users\me\Documents\repository"
Set FilePatterName=*pattern*.pdf
Pushd "%SourceDir%"
For /R %%a in ("%FilePatterName%") do (
Echo F | Xcopy /Y /F "%%~a" "%CopyDir%\"
Del /Q /F "%%~a"
)
Popd
答案 1 :(得分:0)
这里是一种替代方法,它使用相同的结构,但是使用robocopy而不是xcopy和del:
@Set "SourceDir=%UserProfile%\Documents\source"
@Set "CopyDir=%UserProfile%\Documents\repository"
@Set "FilePatterName=*pattern*.pdf"
@If Exist "%SourceDir%\" For /R "%SourceDir%" %%# In ("%FilePatterName%")Do @"%__AppDir__%Robocopy.exe" "%%~dp#." "%CopyDir%" "%%~nx#" /Mov>NUL 2>&1
如果您确实需要查看文件名,我想您可以包括其他RoboCopy
选项,例如/FP
,/NDL
,/NS
,/NC
,{ {1}}和/NJH
。