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

时间:2019-11-27 16:28:26

标签: batch-file

我创建了一个批处理文件,该文件允许将文件从文件夹移动到另一个文件夹。 我的问题是,我的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文件夹,我想检查每个文件夹,检查文件并移动它们,而无需在存储库中创建任何文件夹

2 个答案:

答案 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)

这里是一种替代方法,它使用相同的结构,但是使用而不是

@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