私が書いた検索と置換のバッチ スクリプトに問題があります。テキスト ファイルを開いて、Windows コマンド ラインから値を変更できるようにする必要があります。sed.exe も FART も powershell もインストールできないので、この方法でインストールする必要があります。Linuxで行うのはとても簡単でした....
これまでのところ、次のスクリプトを作成しました。これは、1 行に 1 単語しかないファイルを使用している場合に完全に機能するため、次の形式のファイルを簡単に変更できます。
ああ
、bbb
ccc
そして、ここにバッチファイルがあります:
@echo off
setlocal enabledelayedexpansion
if not exist "%1" (echo this file does not exist...)&goto :eof
for /f "tokens=* delims=" %%a in (%1) do (
set write=%%a
if "%%a"=="%2" set write=%3
echo !write!
(echo !write!)>>%~n1.replaced%~x1
)
del %1
rename %~n1.replaced%~x1 %1
私の問題は、変更する必要があるファイルのほとんどが、次のように文字列と数値の複数の値の行で構成されていることです。
AAA 1.5
BBB 25
CCC 0.1
私のスクリプトがBBB 25をBBB 45に変更しない理由を誰か教えてもらえますか? 区切り文字がスペースであることと関係がありますか?スペースで区切られた単語のファイルがある場合、スクリプトも機能しないため、数字とは何の関係もないと確信しています。
私はフォーラムを検索してきましたが、まだこの問題を発見していませんが、検索を続けます. とにかく、あなたの助けは大歓迎です。
更新
問題解決!! DosTips.comで BatchSubstitute.bat のこのリビジョンを見つけ、一時ファイルに余分なエコーを追加するだけで問題が解決しました。私が投稿したコードが機能しない理由がまだわからないので、誰かがそれを説明できれば素晴らしいと思います. 私はまだこれらすべてにかなり慣れていません!!
更新 2
これは、変更する必要がある典型的な入力ファイルです。
k1 1e3
k2 2e5
n 1.5
×10
スクリプト(replace.bat prefs.txt "k1 1e3" "k1 5e4")を実行すると、次のようになります。
k1 5e4
k2 2e5
n 1.5
×10
ファイル内の任意の行を変更できる必要があります。以前の更新のフォーラムのバージョンは機能するようですが、最初に投稿したバージョンが機能しない理由がわかりません。