DOS(bat)文字列置換の原理
2309 ワード
文字列「c:/test/1」の「/」をすべて「//」に置き換える原理:
(「C:/TEST/1」文字列が既にVAR変数に存在すると仮定する:)
C:/WINDOWS>set "var=C:/TEST/1"
(var変数の文字列"/"の文字をすべて"//"に置き換えます)
C:/WINDOWS>set "var=%var:/=//%"
(var変数の内容を表示)
C:/WINDOWS>echo %var% C://TEST//1
結果:C://TEST//1、全て置換完了.
他のネットユーザーがあげた例をいくつかあげます.
ファイル文字列の置換
例2:
筆者はそれを変更して16を17に変更した.
(「C:/TEST/1」文字列が既にVAR変数に存在すると仮定する:)
C:/WINDOWS>set "var=C:/TEST/1"
(var変数の文字列"/"の文字をすべて"//"に置き換えます)
C:/WINDOWS>set "var=%var:/=//%"
(var変数の内容を表示)
C:/WINDOWS>echo %var% C://TEST//1
結果:C://TEST//1、全て置換完了.
他のネットユーザーがあげた例をいくつかあげます.
ファイル文字列の置換
@echo off
echo ***** Replace "abcd" as "ABCD" *****
set strFilePath=C:\Users\Leez\Desktop\TestBat\TestSource.txt
set strOld=abcd
set strNew=ABCD
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%strFilePath%) do (
set "var=%%i"
if not !var!.==. (
set "var=!var:%strOld%=%strNew%!"
echo !var!!>>%strFilePath%.bk
)
)
move /y %strFilePath%.bk %strFilePath%
pause
例2:
@echo off
setlocal enabledelayedexpansion
set file=
set /p file= ( ):
set "file=%file:"=%"
for %%i in ("%file%") do set file=%%~fi
echo.
set replaced=
set /p replaced= :
echo.
set all=
set /p all= :
for /f "delims=" %%i in ('type "%file%"') do (
set str=%%i
set "str=!str:%replaced%=%all%!"
echo !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%"
筆者はそれを変更して16を17に変更した.
@echo off
setlocal enabledelayedexpansion
set file=c:\Program Files\hndsclient\ds\GetFile.ini
set "file=%file:"=%"
for %%i in ("%file%") do set file=%%~fi
echo.
set replaced=16
echo.
set all=17
for /f "delims=" %%i in ('type "%file%"') do (
set str=%%i
set "str=!str:%replaced%=%all%!"
echo !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%"