我有一个包含多个文件夹的目录,每个文件夹都包含子文件夹。我想运行一个批处理,搜索这些文件夹中是否存在名为“failed”的特定子文件夹。如果此子文件夹中存在文件,我希望它将该文件移动到另一个已定义的文件夹。
我试图查找“if exist”命令的用法,但似乎找不到任何直接符合我需要的命令。
要移动的文件的名称和类型是随机的,这就是为什么我认为“如果存在”是最无用的。
有什么建议吗?
答案 0 :(得分:0)
阅读help for
,注意/r
和/d
选项,然后在命令行中试用这个单行
for /d /r %a in (failed) do @echo %a
您将看到此循环遍历所有目录结构并将failed
附加到目录名
然后添加检查目录的实际存在
if exist %a\nul @echo %a
然后添加第二个循环来迭代找到的failed
目录
for %b in (%a\*) do @echo %b
然后将echo
替换为所需的move
命令
move %b %destination%\%~nxb
然后你去,用一个简单的单行
for /d /r %a in (failed) do @if exist %a\nul @for %b in (%a\*) do @move %b %destination%\%~nxb
或者,翻译成一个bat文件并加了一点
pushd %sourceroot%
for /d /r %%a in (failed) do (
if exist %%a\nul (
for %%b in (%%a\*) do (
move %%b %destination%\%%~nxb
)
)
)
popd
你必须找到一种重命名目标文件的方法,以避免名称冲突。