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

Script, das Textfiles untersucht und Textstellen automatisch ändert

Frage Entwicklung Batch & Shell

Mitglied: lordofremixes

lordofremixes (Level 2) - Jetzt verbinden

24.03.2014, aktualisiert 09:12 Uhr, 1313 Aufrufe, 5 Kommentare

Hallo zusammen,

ich habe hier folgendes Script (auch aus dem administrator.de Forum ):

01.
@echo off & setlocal 
02.
set "Ordner=\\server1\profile\" 
03.
set "Typ=txt" 
04.
set "Von=www.Homepage_alt.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.Homepage_neu.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
In dem Script kann man oben den Texttyp angeben (txt, rtf, html, Zeile 3), den zu suchenden Text(Zeile 4), und den zu ersetzenden Text (Zeile 16).
Funktioniert wirklich gut, habe aber noch folgende Frage:

Die zu suchenden Dateien liegen alle in diesen Verzeichnissen:

\\server1\profile\test\Signaturen
\\server1\profile\test2\Signaturen
\\server1\profile\test3\Signaturen
\\server1\profile\test4\Signaturen
\\server1\profile\test5\Signaturen
\\server1\profile\test6\Signaturen

Das Script, das mir jetzt vorliegt, durchsucht aber dann auch Ordner wie z.B.

\\server\profile\test6\Word-Dokumente und ändert da dann natürlich auch die Textstellen..

Wie bekomme ich es hin, dass das Script nur die Ordner Signaturen durchsucht und ändert und alle Unterordner \\server\profile\.. auslässt (also wirklich nur Änderungen in den Ordnern Signaturen)?

Bitte um Hilfe!

Gruß
lordofremixes




Mitglied: TsukiSan
24.03.2014 um 10:02 Uhr
Hallo lordofremixes,

wenn du in der Kommandozeile einmal
01.
dir /?
eingibst, dann siehst du, welchen Buchstaben du oben in deiner Schleife rausnehmen musst, damit keine Unterverzeichnisse durchsucht werden.

Gruss
Tsuki
Bitte warten ..
Mitglied: bastla
24.03.2014 um 12:05 Uhr
Hallo lordofremixes!

Im einfachsten Fall könntest Du dem "dir" einen passenden Filter hinzufügen, etwa:
for /f "delims=" %%i in ('dir /s /b /a-d *.%Typ%^|findstr /i "Signaturen"') do call :ProcessFile "%%i"
Damit werden nur Dateipfade verwendet, die "Signaturen" enthalten - könnte allerdings auch im Namen der Datei sein.

Als exaktere Alternative dazu könntest Du geschachtelte "for /d"-Schleifen verwenden, um zunächst alle "\\server1\profile\test*"-Ordner zu erhalten und darin dann nur die "Signaturen"-Ordner verarbeiten ...

Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
24.03.2014 um 16:18 Uhr
Hallo bastla,

habe jetzt folgendes Script:

01.
@echo off & setlocal 
02.
set "Ordner=D:\TSProfile\Test\" 
03.
set "Typ=txt" 
04.
set "Von=www.AlteHomepage.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%^|findstr /i "Signatures"') do call :ProcessFile "%%i" 
11.
echo %Anzahl% Dateien bearbeitet 
12.
pause 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
set "Nach=www.NeueHomepage.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 
24.
 
Er bringt mir jetzt aber die ganze Zeit Fehlermeldungen:

01.
Bearbeitet: "D:\TSProfile\Test\sf.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures\ 
02.
goethe.txt" 
03.
Bearbeitet: "D:\TSProfile\Test\sf.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures\ 
04.
sf.txt" 
05.
Bearbeitet: "D:\TSProfile\Test\sf.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures\ 
06.
sfprivat.txt" 
07.
C:\Users\ADMINI~1.BEP\AppData\Local\Temp\2\ReplaceIt.vbs(1, 76) Laufzeitfehler i 
08.
n Microsoft VBScript: Eingabe hinter Dateiende. 
09.
 
10.
Bearbeitet: "D:\TSProfile\Test\sfr.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
11.
\sfr.txt" 
12.
Bearbeitet: "D:\TSProfile\Test\sfr.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
13.
\sfr_m.txt" 
14.
C:\Users\ADMINI~1.BEP\AppData\Local\Temp\2\ReplaceIt.vbs(1, 76) Laufzeitfehler i 
15.
n Microsoft VBScript: Eingabe hinter Dateiende. 
16.
 
17.
Bearbeitet: "D:\TSProfile\Test\sgr.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
18.
\sgr.txt" 
19.
C:\Users\ADMINI~1.BEP\AppData\Local\Temp\2\ReplaceIt.vbs(1, 76) Laufzeitfehler i 
20.
n Microsoft VBScript: Eingabe hinter Dateiende. 
21.
 
22.
Bearbeitet: "D:\TSProfile\Test\sgr.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
23.
\sgr_Alpine.txt" 
24.
Bearbeitet: "D:\TSProfile\Test\si.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures\ 
25.
rr.txt" 
26.
Bearbeitet: "D:\TSProfile\Test\si.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures\ 
27.
si.txt" 
28.
Bearbeitet: "D:\TSProfile\Test\ski.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
29.
\ski.txt" 
30.
Bearbeitet: "D:\TSProfile\Test\ski.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
31.
\ski_m.txt" 
32.
C:\Users\ADMINI~1.BEP\AppData\Local\Temp\2\ReplaceIt.vbs(1, 76) Laufzeitfehler i 
33.
n Microsoft VBScript: Eingabe hinter Dateiende. 
34.
 
35.
Bearbeitet: "D:\TSProfile\Test\sro.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
36.
\sro.txt" 
37.
C:\Users\ADMINI~1.BEP\AppData\Local\Temp\2\ReplaceIt.vbs(1, 76) Laufzeitfehler i 
38.
n Microsoft VBScript: Eingabe hinter Dateiende. 
39.
 
40.
Bearbeitet: "D:\TSProfile\Test\ssc.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
41.
\ssc.txt" 
42.
Bearbeitet: "D:\TSProfile\Test\stae.TestDomaene.V2\AppData\Roaming\Microsoft\Signature 
43.
s\stae.txt" 
44.
Bearbeitet: "D:\TSProfile\Test\svh.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
45.
\svh.txt" 
46.
Bearbeitet: "D:\TSProfile\Test\swe.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
47.
\swe.txt" 
48.
Bearbeitet: "D:\TSProfile\Test\tba.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
49.
\tba.txt" 
50.
Bearbeitet: "D:\TSProfile\Test\tba.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
51.
\tba_m.txt" 
52.
Bearbeitet: "D:\TSProfile\Test\tbr.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
53.
\tbr.txt" 
54.
Bearbeitet: "D:\TSProfile\Test\tbr.TestDomaene.V2\AppData\Roaming\Microsoft\Signatures 
55.
\tbr_m.txt" 
56.
20 Dateien bearbeitet 
57.
Drücken Sie eine beliebige Taste . . .
Kannst du dir das erklären? Und wieso kommt eigentlich, wenn ich die Datei nocheinmal ausführe, wieder die Meldung, dass er 20 Dateien bearbeitet hat?

Hast du dafür eine Erklärung?

Gruß
lordofremixes
Bitte warten ..
Mitglied: lordofremixes
24.03.2014 um 16:24 Uhr
Und komischerweise passiert dies nur, wenn der Texttyp auf txt steht,
bei rtf oder htm meckert er nicht rum..
Bitte warten ..
Mitglied: bastla
24.03.2014, aktualisiert um 18:30 Uhr
Hallo lordofremixes!
Und komischerweise passiert dies nur, wenn der Texttyp auf txt steht,
Vermutlich gibt es nur Textdateien mit einer Größe von 0 Byte ...

Wird's besser, wenn Du Zeile 20 durch
if %~z1 neq 0 cscript //nologo %R% %1 "%Von%" "%Nach%"
ersetzt?

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Backup
gelöst Backup-Script erweitern mit automatischer bereinigung (6)

Frage von DarkHercules zum Thema Backup ...

Batch & Shell
gelöst Win10 ändert den Errorlevel? ( Batch ) (12)

Frage von clragon zum Thema Batch & Shell ...

Windows Server
Standarddrucker ändert sich während einer Remotedesktop Session (2)

Frage von karbaa zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (22)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...