Mit einer Batch Text in andere Batchdateien einfügen
Hallo,
vorab schon einmal Danke für eure Mühe
Ich brauche eigentlich nur eine kleine Batchdatei, mit der ich einen bestimmten Text (abc), in eine andere Batchdatei einfügen kann.
Kurze Erläuterung:
wir haben eine "user.bat" welche beim Systemstart jedes Benutzers ausgeführt wird und die Netzlaufwerke verbindet, die User.bat können zum Teil unterschiedlich sein( versch. Laufwerke etc). Nun möchte ich einen weiteren Befehl am Ende der Batch hinzufügen, da ich das aber nicht > 100mal per Hand eintragen möchte, brauche ich eine Batch die das für mich erledigt, desweiteren wird das auch nicht das letzte Mal sein das etwas an allen user.bat Dateien geändert werden muss. Nun kommt mein eigentliches Problem die Batch Dateien sind in versch. Ordnern (Bsp: Netzlaufwerk/Schmitt, Netzlaufwerk/Müller, Netzlaufwerk/Baum etc).
Vielen Dank
Mit freundlichen Grüßen
Klaus Fischer
vorab schon einmal Danke für eure Mühe
Ich brauche eigentlich nur eine kleine Batchdatei, mit der ich einen bestimmten Text (abc), in eine andere Batchdatei einfügen kann.
Kurze Erläuterung:
wir haben eine "user.bat" welche beim Systemstart jedes Benutzers ausgeführt wird und die Netzlaufwerke verbindet, die User.bat können zum Teil unterschiedlich sein( versch. Laufwerke etc). Nun möchte ich einen weiteren Befehl am Ende der Batch hinzufügen, da ich das aber nicht > 100mal per Hand eintragen möchte, brauche ich eine Batch die das für mich erledigt, desweiteren wird das auch nicht das letzte Mal sein das etwas an allen user.bat Dateien geändert werden muss. Nun kommt mein eigentliches Problem die Batch Dateien sind in versch. Ordnern (Bsp: Netzlaufwerk/Schmitt, Netzlaufwerk/Müller, Netzlaufwerk/Baum etc).
Vielen Dank
Mit freundlichen Grüßen
Klaus Fischer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195672
Url: https://administrator.de/forum/mit-einer-batch-text-in-andere-batchdateien-einfuegen-195672.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
nur mal so als Idee.
Du legst dir auf C:\Login.txt eine Liste mit den Pfaden zu allen Login Scripts an.
Dann nimmst du dir eine Batch File die ca. so aussieht (ungetestet und @bastla wird sicher bald eine schönere Variante posten)
Gruß
nur mal so als Idee.
Du legst dir auf C:\Login.txt eine Liste mit den Pfaden zu allen Login Scripts an.
Dann nimmst du dir eine Batch File die ca. so aussieht (ungetestet und @bastla wird sicher bald eine schönere Variante posten)
@ECHO OFF && setlocale
FOR /F %%p IN (C:\Login.txt) DO (
echo "BESTIMMTER TEXT" >> %%p
)
Gruß
Hallo,
Innerhalb der Schleife benutzt du die Variable "%%A".
Und du musst den Anweisungsblock immer schließen.
Und warum hast du ein Trennzeichen (delims=*) eingebaut?
Also könnte deine Datei so etwa funktionieren
Hier kannst du sonst auch nachschauen, die Seite ist relativ gut.
http://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
Gruß
PS.: Und bitte die < code > < /code > Tags benützen. Ohne Leerzeichen
Zitat von @GordonS:
Danke, zumindest schonmal eine Idee, falls gar nichts mehr geht
Anbei meine ersten Versuche:
Aus anderen Fragestellungen zusammengebaut.. funktioniert natürlich nicht...
For Schleifen sind nicht deins oder? ;)Danke, zumindest schonmal eine Idee, falls gar nichts mehr geht
Anbei meine ersten Versuche:
Aus anderen Fragestellungen zusammengebaut.. funktioniert natürlich nicht...
Innerhalb der Schleife benutzt du die Variable "%%A".
Und du musst den Anweisungsblock immer schließen.
Und warum hast du ein Trennzeichen (delims=*) eingebaut?
Also könnte deine Datei so etwa funktionieren
@ echo off && setlocal
FOR /F %%A IN ('dir /b /s user.bat') do (
echo "DEIN TEXT" >> %%A
)
Hier kannst du sonst auch nachschauen, die Seite ist relativ gut.
http://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
Gruß
PS.: Und bitte die < code > < /code > Tags benützen. Ohne Leerzeichen
Hallo Hitman,
nee, nee, so wird dat nüscht.
Du hast da die Besonderheiten beim Erweitern von Variablen seitens des Batchscript-Interpreters und einige andere gemeine Details ausser Acht gelassen.
Die Variable
Das ist aber auch garnicht nötig, es geht auch per bedingte Befehlsausführung:
Der
Die Option
Damit der
Die Ausgaben und Fehlermeldungen von
Wenn beim Suchbegriff Groß-/Kleinschreibung unterschieden werden soll, muss der Parameter
Gruß
Friemler
nee, nee, so wird dat nüscht.
Die Variable
vorhanden
wird innerhalb der FOR
-Schleife verändert und verwendet, ohne die verzögerte Variablenerweiterung einzuschalten (setlocal enabledelayedexpansion
) und zu nutzen (statt %vorhanden%
schreibt man dann !vorhanden!
).Das ist aber auch garnicht nötig, es geht auch per bedingte Befehlsausführung:
@echo off & setlocal
set "BaseDir=Startverzeichnis"
set "BatchFile=user.bat"
set "SearchStr=Dein Text"
for /f "delims=" %%a in ('dir /s /b "%BaseDir%\%BatchFile%" 2^>NUL') do (
findstr /i /c:"%SearchStr%" "%%a" 1>NUL 2>NUL || (
>>"%%a" (set /p "=%SearchStr%" <NUL & echo.)
)
)
Der
SET
-Befehl in Zeile 9 dient der Ausgabe des gewünschten Textes in die Datei. Durch das Einschließen des Textes (in der Variablen SearchStr
) in Anführungszeichen kann der Text auch Zeichen enthalten, die zum Sprachumfang von Batchscript gehören, ohne dass der Batchscript-Interpreter ins Trudeln kommt. In einigen Fällen kann das trotzdem passieren, deshalb benutze ich für solche Anwendungsfälle lieber VBScript.Die Option
"delims="
sollte man beim Verarbeiten von unbekannten Pfaden/Dateinamen durch eine FOR
-Schleife immer benutzen, sonst kommt es bei Pfaden/Dateinamen, die Leerzeichen enthalten, zu einem "Datei nicht gefunden"
-Fehler (Leerzeichen sind die Standard-Trennzeichen für den Tokenizer der FOR
-Schleife), der ohne das 2^>NUL
hinter dem DIR
-Befehl auch dazu führen würde, dass die FOR
-Schleife im Fehlerfall ausgeführt wird - die Laufvariable hätte dann eben den Wert "Datei"
und diese Datei würde dann der FINDSTR
-Befehl in der Schleife wiederum garantiert nicht finden.Damit der
FINDSTR
-Befehl auch dann brav nach dem Suchbegriff als ganzem sucht, wenn der Suchbegriff Leerzeichen enthält, ist der Suchbegriff hinter dem Parameter /c:
angegeben. Ansonsten interpretiert FINDSTR
durch Leerzeichen separierte Wörter als eine Liste von Suchbegriffen => Ist einer davon in der zu durchsuchenden Datei vorhanden, liegt ein Treffer vor.Die Ausgaben und Fehlermeldungen von
FINDSTR
interessieren nicht, deshalb wird mit 1>NUL
die Standardausgabe und mit 2>NUL
der Standardfehlerkanal ins Nirvana umgeleitet.Wenn beim Suchbegriff Groß-/Kleinschreibung unterschieden werden soll, muss der Parameter
/i
beim FINDSTR
-Befehl entfernt werden.Gruß
Friemler
Hallo Klaus,
sorry, da ist mir das "Escapen" des
Hier also nochmal die funktionierende Version:
Gruß
Friemler
sorry, da ist mir das "Escapen" des
>
-Zeichens im Kopf der FOR
-Schleife durch die Lappen gegangen. Hier also nochmal die funktionierende Version:
@echo off & setlocal
set "BaseDir=L:\Netzlaufwerk"
set "BatchFile=user.bat"
set "SearchStr=q:\edv\erstinstallation\bginfo\bginfo.exe q:\edv\erstinstallation\bginfo\td.bgi /TIMER:00"
for /f "delims=" %%a in ('dir /s /b "%BaseDir%\%BatchFile%" 2^>NUL') do (
findstr /i /c:"%SearchStr%" "%%a" 1>NUL 2>NUL || (
>>"%%a" (set /p "=%SearchStr%" <NUL & echo.)
)
)
Gruß
Friemler