Batch file 批处理,移动位于子目录中的文件
我想移动位于所有具有特定文件扩展名的二级子目录中的所有文件 以下是我所拥有的:Batch file 批处理,移动位于子目录中的文件,batch-file,move,Batch File,Move,我想移动位于所有具有特定文件扩展名的二级子目录中的所有文件 以下是我所拥有的: cd D:\Media\Unsorted if not exist Movies mkdir Movies move Movies-Downloaded\*\*.mp4 Movies\ 我的“移动”语法有问题吗?我怎样才能做到这一点呢?是的,有点不对劲。只能在指定路径的最后一个元素上使用通配符。在最后一个元素(.mp4文件)和上一个元素(.mp4文件所在的文件夹)中使用通配符。这是不允许的 您必须枚举文件夹,然后针
cd D:\Media\Unsorted
if not exist Movies mkdir Movies
move Movies-Downloaded\*\*.mp4 Movies\
我的“移动”语法有问题吗?我怎样才能做到这一点呢?是的,有点不对劲。只能在指定路径的最后一个元素上使用通配符。在最后一个元素(.mp4文件)和上一个元素(.mp4文件所在的文件夹)中使用通配符。这是不允许的 您必须枚举文件夹,然后针对每个文件夹,将其中的文件移动到目标文件夹
pushd D:\Media\Unsorted
if not exist Movies mkdir Movies
for /d %a in ("*") do if /i not "%~nxa"=="Movies" move /y "%~fa\*.mp4" "Movies"
popd
要在批处理文件中包含前面的命令,百分比符号必须加倍,即用%%
替换每个%%
它所做的是针对当前目录(
pushd
)中的每个目录(for/d%a
,其中%a
将保存对正在处理的目录的引用),如果目录(%nxa
)的名称和扩展名不等于目标目录,使用源目录的完整路径(%~fa
)将所有.mp4
文件从源目录移动到目标目录。是否确定*对于目录通配符可用?运行命令时是否出现错误?