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 1) - Jetzt verbinden

24.03.2014, aktualisiert 09:12 Uhr, 1298 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
Batch & Shell
gelöst Bin und cue automatisch zusamen in ein RAR-Archiv? (2)

Frage von Rotnasenkater zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel Datei automatisch , jede Woche , an bestimmten Drucker ausdrucken. (7)

Frage von tomigun zum Thema Microsoft Office ...

Neue Wissensbeiträge
Windows 10

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

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (8)

Frage von ahaeuser zum Thema Windows Server ...