我在脚本中有一个问题:.bat文件无法逃脱字符
@echo on
setlocal EnableDelayedExpansion
pushd C:\Users\Oskars.Abuhovs\Desktop\testJstoReplace
for /f "delims=" %%a in ('dir /b /a-d-h-s') do (
set newFile=C:\Users\Oskars.Abuhovs\Desktop\tempjs\%%a
if exist !newfile! del /f /q !newfile!
for /f "delims=" %%L in (%%a) do (
set newLine=%%L
echo !^newLine:dojo/i18n=ggggggggg^^!dddd! >> !newFile!
)
)
popd
pause
的问题是在一排:
echo !^newLine:dojo/i18n=ggggggggg^^!dddd! >> !newFile!
凡性格!没有逃脱,我读到setlocal EnableDelayedExpansion
!字符应该使用^^
转义,但不会发生。我如何逃避这个角色?
编辑:
我要替换文件字符串的一部分。这个特定的字符串dojo/i18n
应该被替换为另一个字符串,它包含!例如dojo/i18n!mycomputer
。
整个脚本一起从文件夹中读取文件,然后通过搜索这个字符串的行搜索每个文件行:dojo/i18n
,当它被发现时,字符串应该替换早期提到的文本dojo/i18n!mycomputer
,它包含!我试图逃跑!有两个^^的字符,因为它应该在setlocal EnableDelayedExpansion
时工作,但是这个组合:^^!在这一行不起作用,但当我尝试简单echo ^^!
它的工作。
所以我问如何逃生!该行中的字符?
在此先感谢!
应该怎样做线?你想替换部分字符串,什么是'dddd!'?请解释更多。 – Endoro
@Oskars Abuhovs当变量被'!'本身扩展时,在搜索和替换字符串中都不能使用'!'。在百分比扩展中使用'%'时也是如此。 – jeb
@jeb感谢您的回复,我会在脑海中记住这一点。 –