Batch Mehrere Dateien bearbeiten - Problem bei Echo Übergabe
Fehler bei der Echo Übergabe und dem Prozentzeichen
Hallo Leute,
ich möchte mithilfe einer Batchdatei einen Ordnerinhalt auslesen (die Dateinamen) und dann jedes File bearbeiten.
Mein Problem ist jetzt bei dem bearbeiten der Files:
Hier sollte normalerweise, der VBScript teil in eine Replacer.vbs (%R%) geschrieben und ausgeführt werden.
Jedoch erhalte ich immer folgende Fehlermeldung: ":" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Ich komm nicht weiter, wie ich den VBScript teil mit echo in die Datei korrekt umlenken kann.
Mit echo eingeklammert (" ") hat es nicht funktioniert, da in der Replacer.vbs am Anfang und am Ende jeden Datensatzes das Gänsefüßchen war.
Ich hoffe ihr versteht mein Problem und könnt mir helfen!
Grüße
Pounty
Hallo Leute,
ich möchte mithilfe einer Batchdatei einen Ordnerinhalt auslesen (die Dateinamen) und dann jedes File bearbeiten.
Mein Problem ist jetzt bei dem bearbeiten der Files:
FOR /F "delims=" %%c IN ('dir *.cmd /b') DO ( >>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"): T=fso.OpenTextFile("%%c").ReadAll:fso.CreateTextFile("%%c",True).Write Replace(T,"abc","balu") cscript //nologo %R% )
Hier sollte normalerweise, der VBScript teil in eine Replacer.vbs (%R%) geschrieben und ausgeführt werden.
Jedoch erhalte ich immer folgende Fehlermeldung: ":" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Ich komm nicht weiter, wie ich den VBScript teil mit echo in die Datei korrekt umlenken kann.
Mit echo eingeklammert (" ") hat es nicht funktioniert, da in der Replacer.vbs am Anfang und am Ende jeden Datensatzes das Gänsefüßchen war.
Ich hoffe ihr versteht mein Problem und könnt mir helfen!
Grüße
Pounty
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167985
Url: https://administrator.de/forum/batch-mehrere-dateien-bearbeiten-problem-bei-echo-uebergabe-167985.html
Ausgedruckt am: 21.04.2025 um 11:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
wenn ich dich richtig verstehe, würde ich es so machen:
Deine Fehler:
oder willst du die Datei wirklich nach jedem neuen Eintrag ausführen?
MfG,
Mathe172
wenn ich dich richtig verstehe, würde ich es so machen:
(FOR /F "delims=" %%c IN ('dir *.cmd /b') DO (echo.Set fso=CreateObject(""Scripting.FileSystemObject""): T=fso.OpenTextFile(""%%c"").ReadAll:fso.CreateTextFile(""%%c"",True).Write Replace(T,""abc"",""balu""))>>"%R%"
cscript //nologo %R%
- (Dateipfade (%R%) in Anführungszeichen) -nur optisch, nicht komplett falsch, aber gefählich
- (Nach dem echo ein . oder /) -nur optisch, nicht komplett falsch, aber gefählich
- Befehle mit & verknüpfen (fällt bei mir weg)
oder willst du die Datei wirklich nach jedem neuen Eintrag ausführen?
MfG,
Mathe172
Hallo Pounty,
Also so:
Gruß
Friemler
- Es ist für die Übersicht besser, solche Bandwurmzeilen zu vermeiden.
Wenn man eine Textdatei öffnet, sollte man (wegen der Verständlichkeit) auch den Zugriffsmodus (lesen/schreiben) angeben.- Es ist ungeschickt, bei jeden Schleifendurchlauf den VBS-Code neu zu schreiben.
- Besser ist, das VBScript einmal zu erzeugen (im
%TEMP%
-Verzeichnis) und es in der Schleife mit dem Namen der gerade zu verarbeitenden Datei als Parameter aufzurufen. - Wenn das VBScript seine Arbeit getan hat, sollte man es auch wieder löschen.
DIR
könnte ja auch mal keine Datei finden. Um zu verhindern, dass dann der Schleifenrumpf mit dem Text der Fehlermeldung in der Laufvariablen aufgerufen wird, sollte man den Fehlerkanal 2 ins Nirvana umleiten.
Also so:
@echo off
setlocal
set "R=%Temp%\Replace.vbs"
> "%R%" echo Set fso = CreateObject("Scripting.FileSystemObject")
>>"%R%" echo T = fso.OpenTextFile(WScript.Arguments(0)).ReadAll
>>"%R%" echo fso.CreateTextFile(WScript.Arguments(0), True).Write Replace(T, "abc", "balu")
for /f "delims=" %%c in ('dir /b *.cmd 2^>NUL') do (
cscript /nologo "%R%" "%%c"
)
del "%R%"
Gruß
Friemler
@Friemler
- und ob die zusätzlich angegebenen (Default-)Parameter "
Ansonsten kann ich Dir aber nur beipflichten ...
Grüße
bastla
Wenn man eine Textdatei öffnet, sollte man (wegen der Verständlichkeit) auch den Zugriffsmodus (lesen/schreiben) angeben.
Wenn im Zuge des Öffnens ein "ReadAll
" erfolgt, sehe ich kein Verständlichkeitsproblem 1, False, 0
" tatsächlich die Verständlichkeit fördern?Ansonsten kann ich Dir aber nur beipflichten ...
Grüße
bastla