我知道你可以在批处理文件中使用帽子字符来转义&符号
例如:
echo a ^& b
a & b
但我使用的命令
for /f "tokens=*" %%A IN ('DIR /B /A-D /S .acl') DO ProcessACL.cmd "%%A"
即在当前目录或当前目录的子目录中查找所有名为.“acl”的文件。
问题是,我正在查找包含“&”字符的路径名(不,它们不能被重命名),我需要一种自动转义"&“符号的方法,并使用转义的路径作为参数调用第二个批处理文件。
rem ProcessACL.cmd
echo %1
2条答案
按热度按时间nhhxz33t1#
问题不在于转义,它似乎在第二个脚本中。
如果有一行像
然后,它会扩展并失败:
最好使用延迟扩展,如
为了避免参数中出现感叹号
!
问题,第一个set
应在DisableDelayedExpansion
上下文中使用。rbpvctlc2#
您的for行应该是(请注意 *. acl)
ProcessACL.cmd可以使用%1访问传递给它的路径。
变量% 1所包含的任何内容都是完全包含的。不需要转义符。转义符是批处理程序用来解释正在分析的字符的。