Question

posté un autre sur ce ,, mais je dû modifier vraiment beaucoup ...

Qu'est-ce que la chose est bassicly qu'un lot (y compris peut-être VBScript) peut trouver la ligne 29 dans un txtfile ... il devrait modifier cette ligne.

Si la ligne 29 est comme ceci: 'option = 21' il devrait changer pour 'option = 22'

le problème est que cette ligne se trouve plus dans le fichier. il devrait juste modifier la ligne 29 ...

How-to ???

[il vous plaît pas de programmes personnalisés ;;; il doit être fait par chaque utilisateur sans installer quelque chose sur OK.]

Était-ce utile?

La solution

Ce n'est pas quelque chose que vous faites habituellement dans le lot, mais il est assez simple:

@echo off
setlocal enableextensions enabledelayedexpansion

rem the input file
set inputfile=file.txt

rem temporary file for output, we can't just write into the
rem same file we're reading
set tempfile=%random%-%random%.tmp

rem delete the temporary file if it's already there
rem shouldn't really happen, but just in case ...
copy /y nul %tempfile%

rem line counter
set line=0

rem loop through the file
for /f "delims=" %%l in (%inputfile%) do (
    set /a line+=1
    if !line!==29 (
        rem hardcoded, at the moment, you might want to look
        rem here whether the line really starts with "options"
        rem and just put another number at the end.
        echo option=22>>%tempfile%
    ) else (
        echo %%l>>%tempfile%
    )
)

del %inputfile%
ren %tempfile% %inputfile%

endlocal

Il devrait vous indiquer dans la direction générale si vous voulez adapter.

Autres conseils

Je vois que vous demandez un script vb,
En utilisant AWK, il irait quelque chose comme ça,
peut-être vous aider à vb de code.

awk « {if (FNR == 29) {gsub (/ option = 21 / "option = 22"); print} else {print $ 0;}} » input.txt> sortie.txt

Je n'ai pas essayé, donc pourrait avoir quelques problèmes légers ...

  1. le FNR=29 vérifiera pour le traitement gsub uniquement sur la ligne 29
    • gsub va remplacer toutes les occurrences de option=21 sur la ligne avec option=22
    • d'autres lignes seront transmises par

voici un vbscript

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    linenum = objFile.Line
    strLine = objFile.ReadLine
    If linenum = 29 Then
        strLine = Replace(strLine,"option=21","option=22")
    End If
    WScript.Echo strLine
Loop    

comment utiliser:

c:\test> cscript /nologo myscript.vbs > newfile
c:\test> ren newfile file.txt
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top