我有一个文件夹Target
包含多个文件夹
每个文件夹包含一个与该文件夹同名的文件
我要移动文件夹Part1
,Part2
,Part3
,Part4
和Part5
中的文件
使用cmd
到父文件夹(在这种情况下为“目标”),然后删除文件夹。
结果应该是这样的:
在Linux中,我可以使用mv Part*\*.* ..
我尝试了copy "Part*\*" ""
命令,
但这不起作用。
答案 0 :(得分:1)
使用For循环。在此代码中获取目录名称的关键是"dir /a:d"
,它仅列出目录。我将其放入%%a
变量中。使用%~dp0
引用批处理文件所在的目录。如果您的bat位于其他位置,请查找并全部替换为所需的目录路径。最后,使用RMDIR
删除每个文件夹,并使用/q /s
使其静音,并删除目录(part1 part2等...)和目录本身中的所有文件。
@echo off
for /f "tokens=* delims=" %%a in ('dir /a:d /b "%~dp0"') do (
copy "%~dp0%%a\*.*" "%~dp0"
RMDIR /q /s "%~dp0%%a"
)
答案 1 :(得分:0)
在Windows命令提示符中,execSQL
不起作用,因为wildcards仅在路径的最后一个元素中被允许,而在中间的某个地方被设置。
要解决此问题,请使用for /D
loop来解析copy "Part*\*" ""
中的通配符,然后让copy
处理其余的通配符:
Part*
要移动文件而不是复制文件,只需将for /D %I in ("Part*") do @copy "%~I\*" ".."
替换为move
。如果要删除空的子目录,请附加rd
:
copy
要在batch-file中使用以上代码片段,请确保将所有for /D %I in ("Part*") do @move "%~I\*" ".." & @rd "%~I"
符号加倍。