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

Batch file 使用批处理和浏览子文件夹移动文件,batch-file,robocopy,xcopy,del,Batch File,Robocopy,Xcopy,Del,我创建了一个批处理文件,允许将文件从一个文件夹移动到另一个文件夹。 我的问题是,我的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%"

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

根据我的评论,使用将在目录中递归的
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

这里有一个替代方案,使用相同的结构,但不是and:

@Set“SourceDir=%UserProfile%\Documents\source”
@设置“CopyDir=%UserProfile%\Documents\repository”
@设置“FilePatterName=*pattern*.pdf”
@如果在(“%FilePatterName%”中存在/R“%SourceDir%”的“%SourceDir%\\”,请执行“%\uu AppDir\uuu%Robocopy.exe”“%%dp\。”“%CopyDir%”“%~nx\”/Mov>NUL 2>&1”

如果您真的需要查看文件名,我想您可以为(“%FilePatterName%”)中的/R“%SourceDir%”%%A添加额外的
/FP
/NDL
/NS
/NC
/NJH
/NJS
选项!非常感谢。嗯,不难看。这就是它的工作原理,您无需添加
dir
where
命令。不过,我会发布一个答案,让它看起来更漂亮。我不习惯做bash的事情:)这是完美的工作。A又不是Bourne SHell了!