2010-09-17 14 views
2

Je souhaite écrire une ligne de texte sur une ligne spécifique d'un fichier texte existant en utilisant la programmation DOS dans Windows XP. Je souhaite également saisir le numéro de ligne de l'utilisateur. Toute aide serait appréciée.Programmation de fichier par lots Windows

Répondre

4

Exemple de demander à l'utilisateur:

: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 

Note: La commande FOR avec l'option L peut générer une plus grande crosscheck; pour plus d'informations, tapez c:> FOR /?

POUR/L% variable IN (début, étape, fin) DO commande [paramètres]

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) 

POUR/L %% un IN (1,1,1000) DO si « TYPE% % "==" %% un » goto: 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

Peut-être que vous ne devriez pas utiliser Batch pour cela. Ou peut-être que vous ne devriez pas utiliser de lot du tout.

Peut-être que quelque chose comme ça peut fonctionner. Je ne l'ai pas testé à travers.

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 

Mais cela ne fonctionnera pas si vous utilisez DOS et non une version de Windows NT. (Modifier vos tags si vous utilisez Windows et non dos)

+1

Merci pour la réponse précédente.J'utilise Windows XP. J'ai l'intention d'écrire un fichier batch pour cela. Je l'ai essayé. Mais "!" symbole provoque une erreur.Je veux écrire une ligne de texte à une ligne spécifique dans un fichier texte déjà existant.J'ai aussi besoin d'entrer le numéro de ligne. De l'utilisateur. Maintenant, ce code efface mon fichier existant. Plus d'aide? – 1355

+2

La sixième ligne devrait être si "! Counter!" == "% 1" echo %% a >> nouveaufichier –

+1

Oui, je n'ai pas touché au lot depuis longtemps. Corrigé cela. suis libre de modifier mon message pour d'autres erreurs. – BatchyX

Questions connexes