簡體   English   中英

如何在批處理腳本中查找和替換文件內容

[英]How to Find and Replace file content in batch script

例如,我有sample.txt文件。 該文件包含:

1111101                       
2222203                       
3333303                       
44444A1                       
55555A1                       
66666A1 

現在,我要替換用戶定義的特定模式。 例如,我有另一個文件,其中use定義了他要替換的內容。 例如,文件名是replace.txt。 該文件包含2列,第一列用於模式,第二列用於要替換的文本。

例:

replace.txt

2222203         2222203ADD
55555A1         55555A1SUB

現在,執行批處理文件后,我希望文件sample.txt具有如下內容:

1111101                       
2222203ADD                       
3333303                       
44444A1                       
55555A1SUB                       
66666A1 

還有可能在要替換的文本中包含一個“空格”(第2列?

您可以使用作為Batch-JScript混合應用程序的FindRepl.bat程序,該程序通過正則表達式以非常有效的方式執行這些替換; 它使用XP以后所有Windows版本中標准的JScript語言。 在FindRepl.bat的基本用法中,您將輸入文件重定向到該文件,並放置兩個字符串作為參數,即“搜索”字符串和“替換”字符串。 例如:

< sample.txt FindRepl.bat "2222203" "2222203ADD"

前一個命令將取代所有2222203在文件中的字符串2222203ADD 為了執行多個字符串的替換,您可以在搜索字符串和替換字符串中都包含多個替代項,並用豎線字符分隔這兩個字符串(這稱為alternation ),並包括/ A開關以選擇此功能; 例如:

< sample.txt FindRepl.bat "2222203|55555A1" /A "2222203ADD|55555A1SUB"

如果要在單獨的文件中定義替換集,則只需要從文件中加載字符串,將替換組合成兩個變量,並在FindRepl中使用它們,並在等號之前使用等號表示它們是變量,而不是文字字符串。 如果希望字符串中可以有空格,則必須使用其他字符分隔搜索並替換文件中的部分。 例如,如果您以這種方式在replace.txt文件中使用冒號:

2222203:2222203 ADD
55555A1:55555A1 SUB

然后,下面的批處理文件解決了您的問題:

@echo off
setlocal EnableDelayedExpansion
set "search="
set "replace="
for /F "tokens=1,2 delims=:" %%a in (replace.txt) do (
   set "search=!search!|%%a"
   set "replace=!replace!|%%b"
)
set "search=!search:~1!"
set "replace=!replace:~1!"
< sample.txt FindRepl.bat =search /A =replace

您可以從該站點下載FindRepl.bat並查看其用法說明; 您必須將其放置在先前程序的同一文件夾中,或者最好放置在PATH變量中包含的文件夾中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM