2012-11-10 40 views
0

我正在編寫批處理腳本,我需要從中更新特定行中的文本文件。 例如:在文本文件行號30中有「080-22368865 Ware house」, 腳本必須僅更改「080-22368865」而不是倉庫,因爲用戶在腳本運行後輸入命令提示符爲「 022-26986528「 然後在文本文件中它應該在行號30中顯示」022-26986528 ware-house「。使用用戶輸入值更新文本文件中特定行號的批處理腳本

在此先感謝。

+0

所以,你有什麼嘗試?你發現了什麼問題?如果你想要一個起點,請更準確地解決你的問題。那是Windows嗎?總是同一行號?在運行腳本之後,如何改變用戶輸入的內容? –

回答

1

你的問題錯過了幾個細節,所以下面的批處理文件只是一個起點。行號在第一個參數中給出。

@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 

如果在目標行之後有空行,則上一個程序將失敗:複製過程在該點停止。正如我之前所說,這個和其他細節可以修復...

相關問題