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, 1279 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Host A Record ändert sich automatisch in Subdomain (14)

Frage von garciam zum Thema Windows Server ...

IDE & Editoren
USB STICK Datei AUTOMATISCH beim anschliessen auf fremden PC öffnen (9)

Frage von Jwanner83 zum Thema IDE & Editoren ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...