%%在Windows批处理文件中做了什么?

时间:2015-01-09 14:32:19

标签: batch-file

在我继承并且必须编辑的Windows批处理文件中,有这一行(我简化了可读性):

FOR %%m in (*.XML) DO IF EXIST D:\DATA\%%~m COPY D:\DATA\%%~m subdir

D:\Data中的XML文件复制到当前文件夹的subdir子目录。

我的问题是%%~m%%m不会做什么?

1 个答案:

答案 0 :(得分:1)

@Stephan,@ rojo,@ Magoo的评论已回答了这个问题。

在此汇总,以便将问题标记为已回答:

~中的%%~m字符会从变量m中删除周围的引号。

如果它是包含空格的文件名,您可以将引号放回整个路径名称周围,例如:

if exist "D:\Data\%%~m" copy "D:\Data\%%~m" subdir

您可以从for /?了解这些替代品。变量替换可以包含其他操作,例如%%~nm%%~tm来扩展文件名或日期戳。