windows - Sådan erstattes tekst i tekstfil ved hjælp af bat fil script?

Indlæg af Hanne Mølgaard Plasc

Problem



Så jeg vil oprette et script, der tager 3 argumenter: Sti til fil, Nøjagtigt ord at erstatte, og med, hvad du skal erstatte det. Hvordan oprettes sådanne ting?


Generelt vil jeg have en API som denne:


script.bat "C:/myTextDoc.xml" "\_WORD\_TO\_REPLACE\_" "WordTo Use"

Bedste reference


Jeg har skrevet noget som 2 batch scripts i mit liv, men her er hvordan man tager input fra kommandolinjen:


script.bat filepath find replace
\%1 = filepath, \%2 = find, \%3 = replace


For at gøre udskiftning, gør noget som:


for /f "tokens=1,* delims=]" \%\%A in ('"type \%1|find /n /v """') do (
set "line=\%\%B"
if defined line (
    call set "line=echo.\%\%line:\%~2=\%~3\%\%"
    for /f "delims=" \%\%X in ('"echo."\%\%line\%\%""') do \%\%~X
    ) ELSE echo.
)


(hentes direkte fra linket indsendt af @russ, med de variable tal ændret.)


Jeg synes, det burde fungere for dig.

Andre referencer 1


Brug fnr -værktøjet sin bedre end andet kendt værktøj, da det kan søge og erstatte baseret på regulære udtryk. Også for brugerne af UI kan du konfigurere indstillinger i brugergrænsefladen, og det kan generere kommandolinjestrengen, der så kan bruges i dit script. Meget nem at bruge selv som kommandolinje stirng.


Find det her http://findandreplace.codeplex.com/[5]


Også det er single exe uden nogen afhængighed, så let at bruge.


Eksempel:


fnr --cl --dir "" --fileMask "hibernate.*" --useRegEx 
      --find "find\_str\_expression" --replace "replace\_string"

Andre referencer 2


En hurtig google-søgning fandt dette:


http://www.dostips.com/?t=Batch.FindAndReplace[6]