@ECHO OFF
SETLOCAL
SET "sourcedir=C:\106x"
(
FOR /f "usebackqdelims=" %%a IN ("%sourcedir%\q25967146.txt") DO (
FOR /f "tokens=1*delims==" %%g IN ("%%a") DO (
IF /i "%%g"=="servername" (ECHO(%%g=%~1
) ELSE (ECHO(%%a)
)
)
)>newfile.txt
:: newfile.txt now contains a modified version.
:: This line will overwrite the original
ECHO(MOVE /y newfile.txt "%sourcedir%\q25967146.txt"
GOTO :EOF
您需要更改sourcedir
的設置以適合您的情況。
我用了一個名爲q25967146.txt
的文件來存放我的測試數據。更改名稱以適合自己。
可生產newfile.txt
所需MOVE命令僅僅是ECHO
編用於測試目的。 確認命令正確後,將ECHO(MOVE
更改爲MOVE
以實際移動文件。追加>nul
以抑制報告消息(例如,1 file moved
)
上面顯示的方法故意創建一個新文件,以便可以在不損壞原始文件的情況下查看新版本。
請注意,此版本將在創建新版本時刪除文件中的所有空行。如果需要,這可以被克服。
要運行這個程序,使用
然後引號可以省略thisbatchname「替換文本」
如果更換文字無需空格或其他分隔一個字符串(似乎可能)。
代碼固定 - 有在for /f...%%a...
線是一個delims=="
,這應該是delims=
(一個=
。)雙=
處於for /f ... %%g...
線正確。
要替換文件,請按照ECHO(MOVE
替換爲MOVE
的指示激活move
- 一旦您驗證過程正常運行。正如你所看到的,一個小小的錯誤和損害本來可以完成 - 通過兩步操作保存。
這不是http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the-windows-command-line的副本-envir – ecthelion84 2014-09-29 17:41:32