Bri*_*top 2 batch-file findstr batch-processing
这部分工作正常,直到文件名中有一个&符号,在这种情况下它会完全崩溃我的脚本.
echo %filename% | findstr /i /b /c:"%name% (%year%)"
Run Code Online (Sandbox Code Playgroud)
我不能只是将文件名放入引号,因为我需要在开头找到字符串.那我怎么能两个都做?
对于命令行使用:
echo %file^name:^&=^^^&% | ...
Run Code Online (Sandbox Code Playgroud)
在批处理文件中
echo %%filename:^&=^^^&%% | ...
Run Code Online (Sandbox Code Playgroud)
这个怎么运作?
当管道创建两个新的cmd.exe实例时,echo ...
将解析两次.
诀窍是仅在第二次扩展中扩展文件名.
然后扩展和替换&
用^&
,以避免这些问题&
.
插入符将用于逃脱&符号,并且其本身将被移除.
在第二次扩展中,解析器只能看到echo %filename:&=^&%
.
要强制扩展到第二个解析步骤,批处理文件的百分号必须加倍.
从命令行,这不起作用,但变量名称中的任何位置都有一个简单的插入符号.
替代方案:
echo "%filename%" | findstr /i /b /c:^"\"%filename% (%year%)\""
Run Code Online (Sandbox Code Playgroud)
这会简单地添加引号并在搜索表达式中使用引号
归档时间: |
|
查看次数: |
147 次 |
最近记录: |