lordofremixes
Goto Top

Anpassung Script Text in bestimmten Dateitypen suchen, ersetzen und speichern

Hallo zusammen,

vor langer Zeit wurde von bastla ein Script erstellt, welches bei bestimmten Dateitypen (kann man frei einstellen) nach Text sucht, diesen ersetzt und die Daten dann abspeichert. Der Quellcode von damals war folgender:

@echo off & setlocal
set "Ordner=D:\Vertretungen"  
set "Typ=html"  
set "Von=x.css"  

set R=%temp%\ReplaceIt.vbs
>%R% echo Set a=WScript.Arguments:Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  

pushd "%Ordner%"  
for /f "delims=" %%i in ('dir /b /a-d *.%Typ%') do call :ProcessFile "%%i"  
popd
pause
goto :eof

:ProcessFile
set "Nach="  
findstr /i c:"Vertretungsplan für Mo" %1>nul && set "Nach=Mo.css"  
findstr /i c:"Vertretungsplan für Di" %1>nul && set "Nach=Di.css"  
findstr /i c:"Vertretungsplan für Mi" %1>nul && set "Nach=Mi.css"  
findstr /i c:"Vertretungsplan für Do" %1>nul && set "Nach=Do.css"  
findstr /i c:"Vertretungsplan für Fr" %1>nul && set "Nach=Fr.css"  
if not defined Nach echo Nicht bearbeitet: %1 & goto :eof

cscript //nologo %R% %1 "%Von%" "%Nach%"  
echo Bearbeitet: %1
goto :eof

(Text-Deien öffnen, ein Wort suchen und nach Bedingungsprüfung ein anderes Wort ersetzen)

Ich habe das Script für meine Bedürfnisse angepasst und es funktioniert auch sehr gut!
Meine Fragen sind nun:
1. Kann ich die absolute Angabe des Pfads verändern, so dass er komplette Verzeichnisse auf dem Server inkl. aller Unterordner macht (z.B. in \\S01\Produktiv inkl. aller Unterordner) ?
2. Kann man das Script so erweitern, dass nach Ausführung des Script eine Meldung erscheint, wie viele Dateien bearbeitet wurden und ob es eventuell Fehler gab?

Danke schonmal vielmals.

Gruß
lordofremixes

Content-Key: 214757

Url: https://administrator.de/contentid/214757

Printed on: April 25, 2024 at 22:04 o'clock

Member: bastla
bastla Aug 20, 2013 updated at 11:40:16 (UTC)
Goto Top
Hallo lordofremixes!

Ungetestet etwa so:
@echo off & setlocal
set "Ordner=\\S01\Produktiv"  
set "Typ=html"  
set "Von=x.css"  

set /a Anzahl=0
set R=%temp%\ReplaceIt.vbs
>%R% echo Set a=WScript.Arguments:Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  

for /f "delims=" %%i in ('dir /s /b /a-d *.%Typ%') do call :ProcessFile "%%i"  
echo %Anzahl% Dateien bearbeitet
pause
goto :eof

:ProcessFile
set "Nach="  
findstr /i c:"Vertretungsplan für Mo" %1>nul && set "Nach=Mo.css"  
findstr /i c:"Vertretungsplan für Di" %1>nul && set "Nach=Di.css"  
findstr /i c:"Vertretungsplan für Mi" %1>nul && set "Nach=Mi.css"  
findstr /i c:"Vertretungsplan für Do" %1>nul && set "Nach=Do.css"  
findstr /i c:"Vertretungsplan für Fr" %1>nul && set "Nach=Fr.css"  
if not defined Nach echo Nicht bearbeitet: %1 & goto :eof

cscript //nologo %R% %1 "%Von%" "%Nach%"  
echo Bearbeitet: %1
set /a Anzahl+=1
goto :eof
Grüße
bastla
Member: lordofremixes
lordofremixes Aug 20, 2013 at 12:06:30 (UTC)
Goto Top
Hallo bastla,

habe es gerade ausprobiert. Es kommt dabei folgende Fehlermeldung:

"\\s73\TSProfile\Test"
CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet.

UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.
Bearbeitet: "C:\Windows\globhist.htm"
Bearbeitet: "C:\Windows\hotlist.htm"
C:\Users\ssc\AppData\Local\Temp\ReplaceIt.vbs(1, 109) Laufzeitfehler in Microsof
t VBScript: Erlaubnis verweigert.

Bearbeitet: "C:\Windows\ehome\CreateDisc\SonicResources\ClickMe.htm"
C:\Users\ssc\AppData\Local\Temp\ReplaceIt.vbs(1, 76) Laufzeitfehler in Microsoft
VBScript: Eingabe hinter Dateiende.

Batchvorgang abbrechen (J/N)?

Gruß
lordofremixes
Member: lordofremixes
lordofremixes Aug 20, 2013 at 12:33:31 (UTC)
Goto Top
Hallo,

Hallo,

sorry mein Fehler. Habe es direkt mit der Freigabe ausprobiert face-sad
Member: lordofremixes
lordofremixes Aug 20, 2013 updated at 13:27:20 (UTC)
Goto Top
Hallo bastla,

habe noch eins feststellen können:

Das Script funktioniert zwar so wie es sollte, eines scheint aber nicht zu funktionieren:
Als Ordner habe ich angegeben:

Angegeben ist der Ordner:
@echo off & setlocal
set "Ordner=\\s73\TSProfile\ssc.V2"  
set "Typ=htm"  
set "Von=www.alteSeite.com"  

set /a Anzahl=0
set R=%temp%\ReplaceIt.vbs
>%R% echo Set a=WScript.Arguments:Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  

for /f "delims=" %%i in ('dir /s /b /a-d *.%Typ%') do call :ProcessFile "%%i"  
echo %Anzahl% Dateien bearbeitet
pause
goto :eof

:ProcessFile
set "Nach=www.neueSeite.com"  

if not defined Nach echo Nicht bearbeitet: %1 & goto :eof

cscript //nologo %R% %1 "%Von%" "%Nach%"  
echo Bearbeitet: %1
set /a Anzahl+=1
goto :eof

Er bearbeitet aber das Script je nachdem in welchem Verzeichnis ich das Script ausführe:


Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
ab.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
ae.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
ae_m.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
ae_w.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
ak.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
ap.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
chc.htm"
Bearbeitet: "F:\TSProfile\Test\ae.V2\AppData\Roaming\Microsoft\Signatures\
mb.htm"
Bearbeitet: "F:\TSProfile\Test\cag..V2\AppData\Roaming\Microsoft\Signatures
\cag.htm"
Bearbeitet: "F:\TSProfile\Test\dke.V2\AppData\Roaming\Microsoft\Signatures
\dke.htm"
Bearbeitet: "F:\TSProfile\Test\dke.V2\AppData\Roaming\Microsoft\Signatures
\dke_m.htm"
Bearbeitet: "F:\TSProfile\Test\dke.V2\AppData\Roaming\Microsoft\Signatures
\dke_w.htm"
Bearbeitet: "F:\TSProfile\Test\ewa.V2\AppData\Roaming\Microsoft\Signatures
\et.htm"
Bearbeitet: "F:\TSProfile\Test\ewa.V2\AppData\Roaming\Microsoft\Signatures
\ewa.htm"
14 Dateien bearbeitet
Drücken Sie eine beliebige Taste . . .

Habe ich eventuell was falsch gemacht?

Gruß
lordofremixes