我希望做一个简单的批处理过程,将同一目录的3个不同子目录中的日志文件复制到其他地方的另一个文件夹。
我的代码目前是:
for /r c:\users\...\Unzipped %%g in (*.log) do move /-y "c:\users\...\Unzipped\" "c:\users\...\Log_Files"
我继续收到10条回复,说我的代码语法是正确的,这意味着我的理解至少第一部分是正确的。
问题在于移动命令的原点部分。怎么可能在本质上说“来自3个不同的子文件夹”?
答案 0 :(得分:1)
原始命令
for /r "c:\root\folder" %%g in (*.log) do move /-y "%%~fg" "c:\target\folder"
也就是说,对于每个日志文件,递归地在指示的起始文件夹下,将文件(%%~fg
是%%g
引用的文件的完整路径)移动到目标文件夹
如果要直接指示必须从中获取文件的三个源文件夹,则
for %%g in ("c:\root\f1\*.log" "c:\root\f2\*.log" "d:\somewhere\*.log"
) do move /-y "%%~fg" "c:\target\folder"
但在这种情况下,您不能在/r
命令中包含for
开关进行递归搜索。
答案 1 :(得分:0)
扫描所有子文件夹并搜索* .log
for /f %%f in ('dir /s/b c:\users...\Unzipped\*.log') do move /-y %%f "c:\users...\Unzipped\Logfiles"