Wie kann ich mit der Windows-Eingabeaufforderung eine Zeichenfolge in mehreren HTML-Dateien in einem Verzeichnis und seinen Unterverzeichnissen suchen und ersetzen?

Wie kann ich mit der Windows-Eingabeaufforderung eine Zeichenfolge in mehreren HTML-Dateien in einem Verzeichnis und seinen Unterverzeichnissen suchen und ersetzen?

Diese Anforderung ist ähnlich wieWie kann man mit Windows CMD eine Zeichenfolge in mehreren Textdateien (innerhalb eines Verzeichnisses) suchen und ersetzen? Teil 2

Ich möchte die Funktion „Suchen und Ersetzen“ für alle HTML-Dateien in einem Ordner und seinen Unterordnern ausführen.

Hier nehme ich aus irgendeinem Grund zwei Eingaben, von denen eine der Dateipfad und die andere der Ordnername in diesem Dateipfad ist.

set /p INPUT1= Enter Source file path:
set /p INPUT2= Enter Source folder name (**Without any Space**): 

Here let's assume (below folders can change):
INPUT1= D:\!Test\
INPUT2= Folder1

Then path is D:\!Test\Folder1\
Inside Folder1 there are some more folders like:
....Folder1\A\Common\
....Folder1\B\Common\
....Folder1\C\Common\

In above folder **A** as well as folder **Common** have html files.

I have coded this in .cmd file as below:

set /p INPUT1= Enter Source file path: 
set /p INPUT2= Enter Source folder name (**Without any Space**): 

REM Ersetzen Sie den Text FindTextX.html durch ReplaceTextA.html im OrdnerA, ReplaceTextB.html im OrdnerB, ReplaceTextC.html im OrdnerC.
Setze "OldStringA=FindTextX.html" Setze "NewStringA=ReplaceTextA.html" Setze "NewStringB=ReplaceTextB.html" Setze "NewStringC=ReplaceTextC.html"

@ECHO OFF &SETLOCAL
cd %INPUT1%\%INPUT2%\A\
for %%x in (*.html) do call:process "%%~x"
goto:eof
:process 
set "outFile=%~n1%~x1"  
(for /f "skip=2 delims=" %%a in ('find /n /v "" "%~1"') do (  
    set "ln=%%a"  
    Setlocal enableDelayedExpansion  
    set "ln=!ln:*]=!"  
    if defined ln (
        set "ln=!ln:%OldStringA%=%NewStringA%!"
    )
    echo(!ln!  
    endlocal  
))>"%outFile%"
REM exit /b
REM Come out of A folder
cd..
REM Go inside of B folder
cd B
for %%x in (*.html) do call:process1 "%%~x"
goto:eof
:process1
set "outFile=%~n1%~x1"  
(for /f "skip=2 delims=" %%a in ('find /n /v "" "%~1"') do (  
    set "ln=%%a"  
    Setlocal enableDelayedExpansion  
    set "ln=!ln:*]=!"  
    if defined ln (
        set "ln=!ln:%OldStringB%=%NewStringB%!"  
    )
    echo(!ln!  
    endlocal  
))>"%outFile%"
.......So on for folder **C** .....
exit /b

Dies funktioniert jedoch nicht. Ich erhalte eine leere HTML-Datei im OrdnerA,BundC. Allerdings funktioniert es nicht bei UnterordnernGemeinsamdas sich in jedem der Ordner A, B und C befindet. Ich möchte, dass dieses Skript Text in HTML-Dateien im Ordner ersetztA,BUndCsowie Text innerhalb ihrerUnterordner. Hinweis: Ich möchte keine zusätzlichen BAT-Dateien wie FART, REPLACER, … usw. Deine Hilfe ist wilkommen.

verwandte Informationen