String aus mehreren Dateien finden und ersetzen, ohne eine neue Datei zu erstellen

761
Meera

Ich möchte z. B. "date" aus meinen Dateien eines Ordners suchen, der mehrere ".c" - und ".h" -Dateien enthält, und diese durch "date 24-April-2018" mit Batch-Datei ersetzen. was soll ich tun? Bitte sehen Sie den Code unten. Ich möchte dasselbe tun, aber nicht für eine Datei Input.txt, ich möchte für mehrere Dateien mit Erweiterungen eines Ordners

@echo off  setlocal enableextensions disabledelayedexpansion  set "search=@date" set "replace=@date 24-apr-2018"  set "textFile=Input.txt"  for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do ( set "line=%%i" setlocal enabledelayedexpansion >>"%textFile%" echo(!line:%search%=%replace%! endlocal ) 
2
Wenn Sie `textFile` über` set "textFile =% 1" `definieren, können Sie diese Batchdatei (z. B. SetDate.cmd) aufrufen, um die Datei im übergebenen Parameter zu aktualisieren. Dann können Sie `für% i in (DirPath \ FileMask) verwenden, rufen Sie SetDate.cmd% i auf und verdoppeln das`% `, wenn es sich in einer Batch-Datei befindet. AFH vor 5 Jahren 1
Ich habe dich nicht bekommen. Kannst du mir bitte die Batch-File-Lösung geben? Meera vor 5 Jahren 0
Ich habe vor kurzem mit [GrepWin] (https://github.com/stefankueng/grepWin) begonnen, um mehrere Textdateien und Speicherorte zu finden und zu ersetzen. Ich bin davon beeindruckt. Andi Mohr vor 5 Jahren 0
@ Meera - Ich weiß nicht, was ich sonst noch erklären kann, ohne auf die Details einzugehen, die eine Antwort erfordern würden. Wenn Ihre Batch-Datei `SetDate.cmd` ist, bearbeiten Sie sie so, dass der dritte` set`-Befehl zu `set" textFile =% 1 "` wird. Rufen Sie dann mit `für% f auf (DirPath \ FileMask) und rufen Sie SetDate auf. cmd% f` von der Befehlszeile oder `für %% f in (DirPath \ FileMask) rufen SetDate.cmd %% f` in einer anderen Batchdatei auf. Ich hoffe, es ist klar, was "DirPath" und "FileMask" bedeuten. AFH vor 5 Jahren 0

0 Antworten auf die Frage