我刚开始使用批处理文件,遇到了一个问题。 我需要将所有文件从具有相同名称(旧)的多个文件夹移至父文件夹。 如果我仅对1个文件夹执行此操作,则效果很好,但我不知道如何同时对多个文件夹执行此操作。我将不胜感激。这是我的文件夹结构:
这是我在一个文件夹中的代码:
for %%F in ( c:\test\folder\120006\old\*.*) do move /Y %%F c:\test\folder\120006
感谢您的帮助
答案 0 :(得分:0)
在cmd行上使用:
for /r X:\Folder /d %F in (old.?) do @move "%F\*" "%~dpF"
在批处理文件中:
@Echo off
for /r X:\Folder /d %%F in (old.?) do move "%%F\*" "%%~dpF"
我的ramdrive上的样本树:
> tree /F
Auflistung der Ordnerpfade für Volume RamDisk
└───Folder
├───1
│ └───old
│ somefiles
├───2
│ └───old
│ somefiles
└───3
└───old
somefiles
运行命令后:
> tree /f
Auflistung der Ordnerpfade für Volume RamDisk
└───Folder
├───1
│ │ somefiles
│ └───old
├───2
│ │ somefiles
│ └───old
└───3
│ somefiles
└───old
如果在OLD
下的树中还有 个其他名为Folder
的文件夹,它们的文件应该不向上移动了-使用aschipl的解决方案,否则我喜欢更简单的解决方案。
答案 1 :(得分:0)
由于似乎要处理的文件以及不断变化的目录始终在相同的目录层次结构级别上,因此以下代码应该可以完成您期望的工作:
rem // Iterate over the changing directories:
for /D %%D in ("C:\test\folder\*") do (
rem // Iterate over the files to process:
for %%F in ("%%~D\old\*.*") do (
rem // Actually move the files one level up:
move /Y "%%~F" "%%~dpF.."
)
)
除非确实需要,否则我不会使用递归(for /R
)。