0

バッチ ファイル内の文字列の値を検索して置換しようとしていますが、問題があります。ユーザーにバッチファイルを実行させると、ユーザーに1)ファイルがあるドライブ、2)TEST親フォルダー内のフォルダーの名前、3)新しいサーバーの名前を尋ねられます。バッチ ファイルで importer.config というファイル内を検索し、server_name という値をユーザーからの入力に置き換えます。ここに私が持っているものがあります:

@echo off
SET drive=
SET /P drive=Please enter the drive:

SET folder=
SET /P folder=Enter name of folder desired:

SET server=
SET /P server=Enter name of new server:

@echo off > newfile.txt
setLocal EnableDelayedExpansion

if exist newfile.txt del newfile.txt

for /f "tokens=* delims= " %%a in (%drive%\test\%folder%\importer.config) do (
set str=%%a
set str=!str:server_name=%server%!
echo !str! >> newfile.txt
)
del importer.config
rename newfile.txt importer.config

pause

これを実行するたびに、cmd プロンプトに次のように表示されます。問題は、ファイルが存在するため、不足しているものと、存在するファイルが見つからない理由を理解しようとしていることです。

また、「c:\windows\system32\importer.config が見つかりませんでした」と表示されますが、これも同様に発生する理由は不明です

私はstackoverflowで検索しましたが、これを理解することはできません。

4

1 に答える 1

1

そのために for ループを使用して運を押し上げています。

sed のようなツールがうまく機能します。

この投稿を見ると、使用できるvbscriptの実装が ありますcmd.exe用のsedのようなユーティリティはありますか

set input_file=importer.config
set output_file=temp.config
set new_server_name=server1984

cscript /Nologo sed.vbs s/server_name/%new_server_name%/ < %input_file% > %output_file%
于 2012-11-10T18:15:59.830 に答える