Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Anpassung Script Text in bestimmten Dateitypen suchen, ersetzen und speichern

Frage Entwicklung Batch & Shell

Mitglied: lordofremixes

lordofremixes (Level 1) - Jetzt verbinden

20.08.2013, aktualisiert 15:22 Uhr, 2357 Aufrufe, 4 Kommentare

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:

01.
@echo off & setlocal 
02.
set "Ordner=D:\Vertretungen" 
03.
set "Typ=html" 
04.
set "Von=x.css" 
05.
 
06.
set R=%temp%\ReplaceIt.vbs 
07.
>%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)) 
08.
 
09.
pushd "%Ordner%" 
10.
for /f "delims=" %%i in ('dir /b /a-d *.%Typ%') do call :ProcessFile "%%i" 
11.
popd 
12.
pause 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
set "Nach=" 
17.
findstr /i c:"Vertretungsplan für Mo" %1>nul && set "Nach=Mo.css" 
18.
findstr /i c:"Vertretungsplan für Di" %1>nul && set "Nach=Di.css" 
19.
findstr /i c:"Vertretungsplan für Mi" %1>nul && set "Nach=Mi.css" 
20.
findstr /i c:"Vertretungsplan für Do" %1>nul && set "Nach=Do.css" 
21.
findstr /i c:"Vertretungsplan für Fr" %1>nul && set "Nach=Fr.css" 
22.
if not defined Nach echo Nicht bearbeitet: %1 & goto :eof 
23.
 
24.
cscript //nologo %R% %1 "%Von%" "%Nach%" 
25.
echo Bearbeitet: %1 
26.
goto :eof
(http://www.administrator.de/frage/text-deien-%C3%B6ffnen-ein-wort-suche ...)

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

Mitglied: bastla
20.08.2013, aktualisiert um 13:40 Uhr
Hallo lordofremixes!

Ungetestet etwa so:
01.
@echo off & setlocal 
02.
set "Ordner=\\S01\Produktiv" 
03.
set "Typ=html" 
04.
set "Von=x.css" 
05.
 
06.
set /a Anzahl=0 
07.
set R=%temp%\ReplaceIt.vbs 
08.
>%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)) 
09.
 
10.
for /f "delims=" %%i in ('dir /s /b /a-d *.%Typ%') do call :ProcessFile "%%i" 
11.
echo %Anzahl% Dateien bearbeitet 
12.
pause 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
set "Nach=" 
17.
findstr /i c:"Vertretungsplan für Mo" %1>nul && set "Nach=Mo.css" 
18.
findstr /i c:"Vertretungsplan für Di" %1>nul && set "Nach=Di.css" 
19.
findstr /i c:"Vertretungsplan für Mi" %1>nul && set "Nach=Mi.css" 
20.
findstr /i c:"Vertretungsplan für Do" %1>nul && set "Nach=Do.css" 
21.
findstr /i c:"Vertretungsplan für Fr" %1>nul && set "Nach=Fr.css" 
22.
if not defined Nach echo Nicht bearbeitet: %1 & goto :eof 
23.
 
24.
cscript //nologo %R% %1 "%Von%" "%Nach%" 
25.
echo Bearbeitet: %1 
26.
set /a Anzahl+=1 
27.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
20.08.2013 um 14:06 Uhr
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
Bitte warten ..
Mitglied: lordofremixes
20.08.2013 um 14:33 Uhr
Hallo,

Hallo,

sorry mein Fehler. Habe es direkt mit der Freigabe ausprobiert
Bitte warten ..
Mitglied: lordofremixes
20.08.2013, aktualisiert um 15:27 Uhr
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:
01.
@echo off & setlocal 
02.
set "Ordner=\\s73\TSProfile\ssc.V2" 
03.
set "Typ=htm" 
04.
set "Von=www.alteSeite.com" 
05.
 
06.
set /a Anzahl=0 
07.
set R=%temp%\ReplaceIt.vbs 
08.
>%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)) 
09.
 
10.
for /f "delims=" %%i in ('dir /s /b /a-d *.%Typ%') do call :ProcessFile "%%i" 
11.
echo %Anzahl% Dateien bearbeitet 
12.
pause 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
set "Nach=www.neueSeite.com" 
17.
 
18.
if not defined Nach echo Nicht bearbeitet: %1 & goto :eof 
19.
 
20.
cscript //nologo %R% %1 "%Von%" "%Nach%" 
21.
echo Bearbeitet: %1 
22.
set /a Anzahl+=1 
23.
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
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Suchen ersetzen mit Sonderzeichen (2)

Frage von GNLen1 zum Thema Batch & Shell ...

Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(10)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
Dir tc Befehl unter Windows 10 macht Probleme (12)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (10)

Frage von ahaeuser zum Thema Windows Server ...