Batch file 在目录/子目录中查找任何文件并复制到新目录
我有一个包含许多文件夹的目录,每个文件夹都包含子文件夹。我想运行一个批处理,搜索这些文件夹中是否存在名为“failed”的特定子文件夹。如果此子文件夹中存在文件,我希望它随后将该文件移动到另一个已定义的文件夹 我试图查找“if-exist”命令的用法,但似乎找不到任何直接适合我需要的命令 要移动的文件的名称和类型是随机的,这就是为什么我认为“如果存在”是最有用的Batch file 在目录/子目录中查找任何文件并复制到新目录,batch-file,search,command,move,subdirectory,Batch File,Search,Command,Move,Subdirectory,我有一个包含许多文件夹的目录,每个文件夹都包含子文件夹。我想运行一个批处理,搜索这些文件夹中是否存在名为“failed”的特定子文件夹。如果此子文件夹中存在文件,我希望它随后将该文件移动到另一个已定义的文件夹 我试图查找“if-exist”命令的用法,但似乎找不到任何直接适合我需要的命令 要移动的文件的名称和类型是随机的,这就是为什么我认为“如果存在”是最有用的 有什么建议吗?阅读的帮助,注意/r和/d选项,然后在命令行中尝试这一行 for /d /r %a in (failed) do @ec
有什么建议吗?阅读
的帮助,注意/r
和/d
选项,然后在命令行中尝试这一行
for /d /r %a in (failed) do @echo %a
您将看到此循环在所有目录结构上迭代,并将失败
附加到目录名
然后添加对目录实际存在性的检查
if exist %a\nul @echo %a
for %b in (%a\*) do @echo %b
然后添加第二个循环以迭代找到的failed
目录的所有内容
if exist %a\nul @echo %a
for %b in (%a\*) do @echo %b
然后用所需的move
命令替换echo
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
您必须找到重命名目标文件的方法,以避免名称冲突。谢谢您的建议@PA我的目录结构如下C:\FolderOne-Folder50W>备份失败。因此,一到五十个文件夹中的每个文件夹都有两个子目录,分别称为“备份”和“失败”。我只需要针对那些“失败”的子目录,并将其中存在的任何文件移动到另一个定义的位置。当我尝试你的建议时,提示返回“无效语法”有什么想法吗?