我当前正在创建一个批处理脚本,该脚本必须循环遍历文件中的行,检查某些字符串,以及是否存在带有“#”的匹配前缀(将其注释掉)。
我对批处理脚本完全陌生,到目前为止我所得到的是:
for /f %%j in (CMakeLists.txt) do (
if "%%j"=="Extensions_AntTweakBar" (
echo lol1
)
if "%%j"=="Extensions_Inspection" (
echo lol2
)
if "%%j"=="Extensions_InspectionBar" (
echo lol3
)
)
所以我当前的问题是,我不知道如何在批处理脚本中操作字符串。如果有人可以帮助我,我将不胜感激:)
通常,您可以只使用要附加的文本,后跟变量。
C:\>set MY_VAR=Hello world!
C:\>echo #%MY_VAR%
#Hello world!
C:\>set MY_VAR=#%MY_VAR%
C:\>echo %MY_VAR%
#Hello world!
如果你只是做回声,那很好。echo #%%j
会做你需要的。
但如果你想将该行设置为变量,你必须启用延迟扩展 http://batcheero.blogspot.com/2007/06/how-to-enabledelayedexpansion.html. Add setlocal ENABLEDELAYEDEXPANSION
到文件的顶部,然后用!
代替%
。例如(请注意,我已经添加了delims=
将整行放入%%j
而不是该行的第一个单词):
@echo off
setlocal ENABLEDELAYEDEXPANSION
set LINE=
for /f "delims=" %%j in (CMakeLists.txt) do (
set LINE=%%j
if "%%j"=="Extensions AntTweakBar" (
set LINE=#%%j
)
if "%%j"=="Extensions Inspection" (
set LINE=#%%j
)
if "%%j"=="Extensions InspectionBar" (
set LINE=#%%j
)
echo !LINE!
)
给定这个输入文件:
Extensions AntTweakBar
some text
Extensions Inspection
Extensions What?
some more text
Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text
上面的脚本产生以下输出:
C:\>comment.bat
#Extensions AntTweakBar
some text
#Extensions Inspection
Extensions What?
some more text
#Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text
当然还有删除@echo off
将帮助您调试问题。
但话虽如此,您已经达到了批处理字符串处理所能完成的极限。如果您仍然想使用批处理命令,您可能需要开始将行写入临时文件并使用findstr
用正则表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)