2010-09-17 261 views
2

我想在Windows XP中使用dos批處理文件編程在已存在的文本文件中的特定行寫入一行文本。我也想從用戶輸入行號。任何幫助將不勝感激。windows批處理文件編程

回答

4

實例提示用戶:

:MENU 

    SET /P TYPE=Type the line number and press enter: 
    if "%TYPE%"=="1"        goto ONE 
    if "%TYPE%"=="2"        goto TWO 
    if "%TYPE%"=="3"        goto THREE 
    if "%TYPE%"=="4"        goto FOUR 
    if "%TYPE%"=="5"        goto FIVE 
    goto MENU 

注:對於使用-L選項可以產生較大的交叉檢查命令; 欲瞭解更多信息,請鍵入c:> FOR /?

FOR IN/L%變量(開始,步驟,結束)DO命令[命令參數]

The set is a sequence of numbers from start to end, by step amount. 
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would 
generate the sequence (5 4 3 2 1) 

FOR/L %%一個IN(1,1,1000)DO如果「%TYPE %「==」 %%一個」轉到:VALIDNUM

@echo off 
rem this only prompts the user for a number 

set VALIDNUM= 

:MENU 
cls 
echo. 
echo. 
If NOT "%VALIDNUM%"=="" echo the number is %VALIDNUM% 
echo. 

SET /P TYPE=Type a line number and press enter: 

FOR /L %%a IN (1,1,1000) DO if "%TYPE%"=="%%a" set VALIDNUM=%TYPE% 

goto MENU 
3

也許你不應該使用批處理。或者,也許你不應該使用批處理。

也許這樣的事情可能會起作用。我沒有經過測試。

setlocal enabledelayedexpansion 
SET /a counter=0 
echo. > newfile 
for /f "usebackq delims=" %%a in (yourfile.txt) do (
    if "!counter!"=="%1" echo "YOUR SPECIFIC LINE" >> newfile 
    if not "!counter!"=="%1" echo %%a >> newfile 
    set /a counter+=1 
) 
move newfile yourfile.txt 

但是,如果您使用的是DOS而不是Windows NT的版本,它將無法正常工作。 (如果你使用的是Windows,而不是DOS編輯標記)

+1

感謝您的回覆。我正在使用Windows XP。我打算爲此寫一個批處理文件。我嘗試過這個。但是「!」符號會導致錯誤。我想在已經存在的文本文件的特定行中寫入一行文本。同時我需要輸入行號。來自user.Now此代碼清除我現有的文件。更多幫助? – 1355 2010-09-17 10:47:41

+2

第六行應該是,如果不是「!counter!」==「%1」echo %% a >> newfile – 2010-09-17 15:06:53

+1

是的,我很久沒有觸及批處理。修正了。可以自由編輯我的帖子,爲其他錯誤。 – BatchyX 2010-09-17 17:00:49