スクリプトに問題があります:
@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 ^^!
と機能しました。
だから私は逃げる方法を尋ねています!その行の文字?
前もって感謝します!