次のすべてではないにしても、一部を含むファイルがいくつかあります。
プログラム RxBIN RXPCN RxGroup MemberID
すべてのファイルにこれらのヘッダーがすべて含まれているわけではありませんが、含まれているヘッダーは置き換える必要があるため、次のようになります。
@プログラム @RxBIN @RXPCN @RxGroup @メンバーID
前もってありがとう、ジョー
次のすべてではないにしても、一部を含むファイルがいくつかあります。
プログラム RxBIN RXPCN RxGroup MemberID
すべてのファイルにこれらのヘッダーがすべて含まれているわけではありませんが、含まれているヘッダーは置き換える必要があるため、次のようになります。
@プログラム @RxBIN @RXPCN @RxGroup @メンバーID
前もってありがとう、ジョー
私はまだ、この目的のために構築されたツールを使いたいと思っています.Batch Replacerは、法案に完全に適合しているようです.
しかし、あなたがそれに夢中になっているなら...古いrepl.batをマルチ引数パーサーで使用するもの...これは、 DEBUGコマンドを使用する少しモンスターになりますが、最終的な傑作は次のとおりです。
ソースコード: mmrepl.bat
@ECHO OFF
setLocal EnableDelayedExpansion
::: mmrepl - Replaces one or more strings with others, in file(s)
:::
::: syntax: mmrepl.bat $file $find $replace [$find $replace] ...
::: $file [in] - file to be parsed
::: $find [in] - string to find
::: $replace [in] - string to replace with
:::
::: * $find & $replace should be supplied in pairs, n multiples allowed
::: * $file can be a single file (eg.txt) or a file filter (*.txt)
::: you can supply any command that works with 'dir /b $file'
::: so paths and drives are also valid.
::: * $find,$replace strings can be single words, or strings enclosed
::: in quotes (which will be stripped)
if "%~1"=="" findstr "^:::" "%~f0"&GOTO:EOF
if not exist %1 echo No files matching %1 found&GOTO:EOF
::Creates the following log file:
set log=%0.log
::Temporarily creates the following files but cleans up
set replscr=TEMPDEBUG.SCR
set cmplsrc=TEMPEDLN.SCR
echo To see the work of %0.bat view the log file %log%
echo Multi-Multi Replacement (%0.bat)>%log%
echo.>>%log%
set "files=%1"
shift
set mmreplcmd=
:: Pair up find/replaces
:strippairs
set p1=%1
set p1=!p1:"=!
set p2=%2
set p2=!p2:"=!
SET mmreplcmd=%mmreplcmd%'1R%p1%' 1A '%p2%' 0D 0A
echo Replacing "%p1%" with "%p2%" >> %log%
shift
shift
if "%~1" neq "" goto:strippairs
::Build script
echo N%cmplsrc% > %replscr%
echo E CS:100 %mmreplcmd%'E' 0D 0A>> %replscr%
echo RCX >> %replscr%
echo 40 >> %replscr%
echo W >> %replscr%
echo Q >> %replscr%
DEBUG < %replscr% > NUL
::Execute on files
for /f %%a IN ('dir /b %files%') do (
echo.>>%log%
echo *** File: %%a >> %log%
EDLIN %%a < %cmplsrc% >> %log%
)
DEL %replscr%
DEL %cmplsrc%
注:repl.batの検索で「含まれている」を削除する必要がありました。これは、各タイトルにアンパサンドを追加しているため、常に含まれているためです...私のテストでは、これは正常に機能しますが、YMMV(テスト)。
これは、いくつかの場所でWindows で使用できるsed
(ストリームエディター) を使用して簡単に実行できます。
それは次のようなもので行うことができます
sed -e "s/\(Program\|RxBIN\|RXPCN\|RxGroup\|MemberID\)/@\1/g" myfile.txt > newfile.txt
これは、基本的に「'Program'、'RxBIN'、'RXPCN'、'RxGroup'、または'MemberID'という単語、アットマーク、および一致した任意の単語を置換する」という正規表現です。
Windows に移植された非常に役立つ優れた Unix コマンドがたくさんあります。