1

さて、アップデーターが組み込まれたスクリプトを作成しています。次のコードで新しいファイルを作成し、いくつかの変数を更新しますが、何らかの理由でこれが機能しないため、修正方法や同様のスクリプトを修正する方法がわかりません。ほぼ同じことをします。

@echo off
setlocal enabledelayedexpansion

set /p "findthis"="1"
set /p "replacewith"="1.2.3"
call:updater
set /p "findthis"="2"
set /p "replacewith"="2.3.4"
call:updater
set /p "findthis"="3"
set /p "replacewith"="3.4.5"
call:updater
goto:eof

:updater
for /f "tokens=*" %%a in (updateme.bat) do (

   set write=%%a
   if %%a==%findthis% set write=%replacewith%

   echo !write! 
   echo !write! >>%~n1.replaced%~x1
)
goto:eof
4

1 に答える 1

1

このBATにはいくつかのエラーがあります。

いくつかは明らかな構文エラーです。

  1. すべてを読んhelp setで修正しますset /p "this"="value"(ヒント:/ pオプションを使用せず、変数名の「」の使用法を修正します)

  2. CALLedラベルで%1を使用しようとしました。これは渡されたパラメーターであり、CALLでは渡されていません。読んでくださいHELP CALL

いくつかは論理エラーです。

  1. :updaterコードは、更新された文字列を出力ファイルに追加します。これは3回行われるため、最終的なコードは、文字列が変更された元のコードの3倍になります。

  2. また、コードは文字列を完全な行として見つけようとします。BATファイルに「1」だけを含む行は私にはあまり意味がありません。おそらく、「1」のテキストオカレンスを見つけたいと思うでしょう。

  3. また、以前の問題を修正し、コードの意図を正しく理解していれば、最終的にすべての「1」を「1.2.3」に置き換えてから、すべての「2」を「2.3.4」に置き換えることになります。元の「1」は「1.2.3.4.3」に置き換えられます。その後、再び「1.2.3.4.5.4.3.4.5」になります。それに注意してください。

于 2012-06-14T12:18:27.367 に答える