ファイルの内容を変更できるバッチ ファイルを作成する必要があります。
例えば
Testing.txt ファイルには、Description=MAN_Human の行が含まれており、Description=MAN_Human_V2 に変更されています。
MAN の末尾に (_V2) のみを追加します。
したがって、ファイルを開くと、MAN のみの代わりに MAN_Human_V2 という記述名が表示されます。
作業するファイルが複数あります。助けてください。
ファイルの内容を変更できるバッチ ファイルを作成する必要があります。
例えば
Testing.txt ファイルには、Description=MAN_Human の行が含まれており、Description=MAN_Human_V2 に変更されています。
MAN の末尾に (_V2) のみを追加します。
したがって、ファイルを開くと、MAN のみの代わりに MAN_Human_V2 という記述名が表示されます。
作業するファイルが複数あります。助けてください。
ループを使用しfor
てファイルの各行を移動し、「説明」のある行を見つけたら、出力に「_V2」を追加します。
@echo off
for %%f in (*.txt) do (
for /f "tokens=1* delims=:" %%g in ('type "%%f" ^| findstr /n /v "BoGuSsTrInG"') do (
if "%%hx"=="x" (
echo.>>"%%~nf.newtxt"
) else (
for /f "tokens=1* delims==" %%i in ('echo.%%h') do (
if "%%i"=="Description" (
echo.%%i=%%j_V2>>"%%~nf.newtxt"
) else (
if "%%jx"=="x" (
echo.%%i>>"%%~nf.newtxt"
) else (
echo.%%i=%%j>>"%%~nf.newtxt"
)
)
)
)
)
)
ren *.txt *.oldtxt
ren *.newtxt *.txt
もちろん、test.txt
ファイルの処理中にコンテンツを新しいファイルに出力する必要があります。次に、元のファイルを新しく作成したファイルに置き換えます...
TXT ファイルの名前を元の名前に戻す前に、TXT ファイルの内容を新しいファイルに完全にコピーする必要があります。これは、for
すぐに名前を変更すると、変更後にループがそれらを再び取得し、一部の名前が_V2
何度も追加されるためです。
最後にファイルを削除しません.oldtxt
でした。プロセスが機能したことを確認するまで、元のファイルを破棄してはならないからです。
空白行を保持する回避策が 1 つあります。回避策は、テキスト ファイルの内容を にパイプし、findstr
を含まないすべての行を検索しますBoGuSsTrInG
。出力には行番号が含まれます (空白行を印刷する唯一の方法です)。行番号には末尾のコロン ( :
) があるため、出力をコロンの内容を分割するさまざまな変数に分割できます。tokens=1*
行番号を変数に分割し、行の%%g
結果を%%h
変数に入れます。空かどうかをテスト%%h
して、新しいファイルに空白行を追加できます。それ以外の場合は、以前と同様に処理%%h
します。
ダウンロードできますsed
(UNIXユーティリティ- google sed windows
)
sed -i 's/Description=MAN_Human/Description=MAN_Human_V2/' test.txt
-i
つまり、結果を (画面に表示する代わりに) 同じファイルに書き戻します。2 番目のパラメーターはs
、substitute ... to ... を示し、残りはこれを実行するファイル (のリスト) です。man sed
詳しくはグーグル