在目录/子目录中查找任何文件并复制到新目录

时间:2015-07-07 13:56:47

标签: batch-file search command move subdirectory

我有一个包含多个文件夹的目录,每个文件夹都包含子文件夹。我想运行一个批处理,搜索这些文件夹中是否存在名为“failed”的特定子文件夹。如果此子文件夹中存在文件,我希望它将该文件移动到另一个已定义的文件夹。

我试图查找“if exist”命令的用法,但似乎找不到任何直接符合我需要的命令。

要移动的文件的名称和类型是随机的,这就是为什么我认为“如果存在”是最无用的。

有什么建议吗?

1 个答案:

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

你必须找到一种重命名目标文件的方法,以避免名称冲突。