特定の行のテキスト ファイルを更新する必要があるバッチ スクリプトを作成しています。例: テキスト ファイルの行番号 30 に "080-22368865 倉庫" とある場合、ユーザーがスクリプトを実行した後にコマンド プロンプトに "022- 26986528」の場合、テキスト ファイルの 30 行目に「022-26986528 倉庫」と表示されます。
前もって感謝します。
特定の行のテキスト ファイルを更新する必要があるバッチ スクリプトを作成しています。例: テキスト ファイルの行番号 30 に "080-22368865 倉庫" とある場合、ユーザーがスクリプトを実行した後にコマンド プロンプトに "022- 26986528」の場合、テキスト ファイルの 30 行目に「022-26986528 倉庫」と表示されます。
前もって感謝します。
あなたの質問にはいくつかの詳細がありませんでした。そのため、以下のバッチ ファイルは出発点にすぎません。行番号は、最初のパラメーターで指定されます。
@echo off
setlocal EnableDelayedExpansion
call :editLine %1 < input.txt > output.txt
goto :EOF
:editLine num
set /A skipLines=%1-1
if %skipLines% gtr 0 (
rem Copy lines before the target
for /L %%i in (1,1,%skipLines%) do (
set line=
set /P line=
echo(!line!
)
)
rem Edit the target line
set line=
set /P line=
echo Line %1: "!line!"
for /F "tokens=1*" %%a in ("!line!") do (
set /P firstToken=Enter new value for "%%a":
echo !firstToken! %%b
)
rem Copy the rest of lines
:nextLine
set line=
set /P line=
if not defined line exit /B
echo !line!
goto nextLine
ターゲット行の後に空の行がある場合、前のプログラムは失敗します。コピー プロセスはその時点で停止します。前に言ったように、これと他の詳細は修正できます...