iT邦幫忙

1

如何使用批字檔修改指定文字

to 各位大大
小弟想使用批字檔改指定文件中的文字,有高手可以幫我解決嗎?
主要想把其中的 <LICENSESERVERIP>59.125.59.246</LICENSESERVERIP>
改成 <LICENSESERVERIP>10.32.46.42</LICENSESERVERIP>

有人可以教我怎麼改嗎??
我的系統是windows10,謝謝

我上網查了一下語法

@echo off
REM By SyneArt
REM **************************************用法**************************************
REM ***                                                                          ***
REM ***  call:sub "檔案名" "那一行的原始字串或是局部字串" "那一行所要代替的文字" ***
REM ***                                                                          ***
REM ********************************************************************************

REM 主程式
call:sub "abc.ini" "59.125.59.246" "main=1234"
exit


REM 副程式
:sub
findstr "\<%~3\>" %1 >nul
if %ERRORLEVEL%==1 ( REM 若與內容不符則繼續執行
   for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" %1') do (
       if "%%j"=="" (echo.>>tmp) else (
          echo %%j|find %2>nul&&(call echo %~3>>tmp)||(echo %%j>>tmp)
       )
   )
   copy tmp %1 /y >nul&&del tmp
)

如果是存59.125.59.246是可以修改沒錯,但是加上<LICENSESERVERIP>好像就不行了

看更多先前的討論...收起先前的討論...
純真的人 iT邦研究生 1 級 ‧ 2018-05-14 00:43:37 檢舉
用notepad ++改比較快~
lichang iT邦新手 5 級 ‧ 2018-05-14 08:56:47 檢舉
因為常常要改,而且只是其中一個例子,其實還有好幾個要改,所以還是想做個批次檔自動修改
純真的人 iT邦研究生 1 級 ‧ 2018-05-14 10:17:41 檢舉
恩~你是要用系統排程~定時檢查去改吧...
小成 iT邦高手 10 級 ‧ 2018-05-14 10:36:30 檢舉
powershell
用c#更簡單吧,只是排程改檔的話~

1 個回答

0
froce
iT邦高手 2 級 ‧ 2018-05-14 10:40:53

這是之前找網路上的,改了能用但我也不熟bat,所以不負責任。

for /f "delims=" %%b in ('type 要修改的.xml') do ( 
set "str=%%b"&set "str=!str:<LICENSESERVERIP>59.125.59.246</LICENSESERVERIP>=<LICENSESERVERIP>10.32.46.42</LICENSESERVERIP>!"
echo !str! >>新檔名.xml
) 

要改的字串可能還要注意空白。

另外何不考慮用powershell寫?
https://blogs.msdn.microsoft.com/sonam_rastogi_blogs/2014/05/14/update-xml-file-using-powershell/

小成 iT邦高手 10 級 ‧ 2018-05-14 13:15:56 檢舉
lichang iT邦新手 5 級 ‧ 2018-05-14 23:45:17 檢舉

確實簡單很多

(Get-Content abc.ini).replace('59.125.59.246', '10.32.46.42') | Set-Content abc.ini

謝謝各位

我要發表回答

立即登入回答