在我继承并且必须编辑的Windows批处理文件中,有这一行(我简化了可读性):
FOR %%m in (*.XML) DO IF EXIST D:\DATA\%%~m COPY D:\DATA\%%~m subdir
将D:\Data
中的XML文件复制到当前文件夹的subdir
子目录。
我的问题是%%~m
对%%m
不会做什么?
答案 0 :(得分:1)
@Stephan,@ rojo,@ Magoo的评论已回答了这个问题。
在此汇总,以便将问题标记为已回答:
~
中的%%~m
字符会从变量m
中删除周围的引号。
如果它是包含空格的文件名,您可以将引号放回整个路径名称周围,例如:
if exist "D:\Data\%%~m" copy "D:\Data\%%~m" subdir
您可以从for /?
了解这些替代品。变量替换可以包含其他操作,例如%%~nm
和%%~tm
来扩展文件名或日期戳。