使用批次腳本替換檔案中的文字
昨天,我在客戶的地點工作。該地點有一台Windows伺服器,該伺服器已與外部互聯網隔離,並禁止安裝新的軟體。
我被委託將YAML文件中的所有id
值刪除,將它們設置為null
。例如,輸入文件temp.yaml如下所示:
something
id: 4
something else
id: 64
next one
id: 231
another one
id: 34
我想要的目標文件(result.yaml)應該如下所示:
something
id:
something else
id:
next one
id:
another one
id:
該文件很大,因此手動刪除每個id
值將非常耗時。該Windows伺服器上可訪問的唯一工具是CMD命令提示符。因此,我寫了一個簡單的批次腳本來完成這項任務。在文本編輯器中創建一個名為convert.bat的文件,其內容如下:
@echo off
for /f "tokens=1* delims=:" %%a in (temp.yaml) do (
if "%%b"=="" (
echo %%a
) else (
echo %%a | find " id" > null && echo %%a: || echo %%a: %%b
)
) > result.yaml
你可以在腳本中替換文本temp.yaml和result.yaml,分別代表你的目標輸入和輸出文件。雙擊執行腳本,你就完成了!
對於不熟悉批次腳本的人,這裡有一些基本解釋:
- @echo off表示要抑制命令提示符的顯示,有效地將其隱藏。
-
for
循環有一些選項。tokens=參數指定從每行讀取哪些編號項目(默認為1),delims=指定分隔符字符(默認為空格)。 - %%a和%%b變量與批次文件中的參數類似。
最後一行將結果輸出到所需的文件。與手動做這項工作相比,這個簡單的腳本節省了很多時間。:)