批处理按多文件名规则移文件:能否合并两类文件的移动命令?
合并Windows CMD中多个Move命令的方案
嘿,这个问题问得很实用!Windows命令提示符(CMD)里的move命令本身并不支持你设想的Microsoft*.[pdb,dll]这种括号式多扩展名匹配语法——因为CMD的通配符规则里,方括号[]是用来匹配单个字符的(比如file[12].txt会匹配file1.txt和file2.txt),没法直接用来指定多个扩展名。不过我们有几种简洁的办法把两个移动命令合并成一行:
方法1:用&&串联命令(推荐,确保前一步成功再执行后一步)
如果希望只有第一个移动命令成功完成后,才执行第二个命令,可以用&&连接:
move %~dp0\Microsoft*.dll %~dp0\ObjectFolder && move %~dp0\Microsoft*.pdb %~dp0\ObjectFolder
&&的作用是:只有前一条命令执行返回成功码(0)时,才会运行后面的命令,适合需要保证文件移动顺序或依赖关系的场景。
方法2:用&串联命令(不管前一步结果都执行)
如果不管第一个命令是否成功,都要执行第二个移动命令,可以用&连接:
move %~dp0\Microsoft*.dll %~dp0\ObjectFolder & move %~dp0\Microsoft*.pdb %~dp0\ObjectFolder
&是单纯的命令分隔符,会依次执行所有串联的命令,不管前一条命令的执行结果。
方法3:用for循环遍历扩展名(扩展性更强)
如果以后可能需要添加更多扩展名,用for循环会更灵活,一行就能处理多个扩展名:
for %e in (dll pdb) do move %~dp0\Microsoft*.%e %~dp0\ObjectFolder
这个循环会依次把dll和pdb代入变量%e,自动执行对应的move命令,逻辑清晰还方便后续扩展。
内容的提问来源于stack exchange,提问作者yu yang Jian
相关产品推荐
相关产品推荐

