我在腳本中有一個問題:.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感謝您的回覆,我會在腦海中記住這一點。 –