使用批处理和浏览子文件夹移动文件



我创建了一个批处理文件,允许将文件从一个文件夹移动到另一个文件夹。 我的问题是我的 bat 文件也应该浏览源子文件夹,以查找具有特定模式的文件。

实际上:

@ECHO ON
SET SourceDir=C:UsersmeDocumentssource
SET CopyDir=C:UsersmeDocumentsrepository
SET FilePatterName=*pattern*.pdf
FOR %%A IN ("%SourceDir%%FilePatterName%") DO (
ECHO F | XCOPY /Y /F "%%~A" "%CopyDir%"
DEL /Q /F "%%~A"
)
GOTO EOF

例如:在我的源文件夹中,如果我有 sub1、sub2、sub3 文件夹和 sub1-1 文件夹中的 sub1-1 文件夹,我想检查每个文件夹,检查文件并移动它们,而无需在存储库中创建任何文件夹

根据我的评论,使用将通过目录递归的for /r

for /R "%SourceDir%" %%A in ("%FilePatterName%") do...

如果感觉太难看,则首先推送到目录,然后从那里递归搜索:

@Echo off
Set "SourceDir=C:UsersmeDocumentssource"
Set "CopyDir=C:UsersmeDocumentsrepository"
Set FilePatterName=*pattern*.pdf
Pushd "%SourceDir%"
For /R %%a in ("%FilePatterName%") do (
Echo F | Xcopy /Y /F "%%~a" "%CopyDir%"
Del /Q /F "%%~a"
)
Popd

这是一个替代方案,使用相同的结构,但使用robocopy而不是xcopy和del:

@Set "SourceDir=%UserProfile%Documentssource"
@Set "CopyDir=%UserProfile%Documentsrepository"
@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/NJH/NJS

相关内容

最新更新