bennibatcher
Goto Top

Datei in neue Datei schreiben lassen.

Eine .bat Datei soll in eine andere .bat Datei hineinschreiben.

Hallo! Ich habe ein Problem mit .bat dateien.
echo copy %0 /y "%userprofile%\startm~1\Programme\Autostart > datei.bat
Damit Lasse ich eine neue .bat Datei anlegen und will in sie reinschreiben.
Geht aber nicht es gibt mir im Konsolenfenster : copy %0 /y "%userprofile%\startm~1\Programme\Autostart > datei.bat aus.
Aber mit jedem anderen Befehl gehts??
Z.b wenn ich schreibe:
echo pause > datei.bat
echo cls >> datei.bat
Dann gehts ganz einwandfrei.
Warum oben nicht?
Danke schonmal!
LG Benni.

Content-ID: 139889

Url: https://administrator.de/contentid/139889

Ausgedruckt am: 25.11.2024 um 02:11 Uhr

Nottrott
Nottrott 06.04.2010 um 03:08:34 Uhr
Goto Top
Wenn du das Anführungszeichen im copy-Befehl brauchst, musst du es mit einem ^ davor maskieren.
Außerdem willst du vermutlich am Ende auch noch ein Anführungszeichen.
Also:
echo copy %0 /y ^"%userprofile%\startm~1\Programme\Autostart^" > datei.bat
86263
86263 06.04.2010 um 03:10:27 Uhr
Goto Top
Nun das ist ganz logisch:
entweder man setzt etwas in Anführungszeichen oder nicht - du setzt hier vor %userprofile%[...] Anführungszeichen, aber hinter Autostart nicht mehr. Lass es vorne weg oder mach es hinten dran, dann funktioniert es auch. face-smile

//edit: Mist zu langsam ;)
bastla
bastla 06.04.2010 um 13:12:56 Uhr
Goto Top
@dgzrsborkum
Lass es vorne weg oder mach es hinten dran, dann funktioniert es auch. face-smile
Zumindest unter der Annahme, dass ein XP oder darunter als BS zum Ausführen des Ergebnisses verwendet werden soll, würde ich den Vorschlag auf "mach es hinten dran" reduzieren ...

Ansonsten sollte vielleicht
echo copy "%%0" "%%userprofile%%\startm~1\Programme\Autostart">datei.bat
eher den gewünschten Erfolg bringen ...

Grüße
bastla
Nottrott
Nottrott 06.04.2010 um 13:43:52 Uhr
Goto Top
@bastla:
kommt darauf an, ob er in der neuen Datei schon die festen Pfade drinstehen haben will oder ob diese erst beim Ausführen eingefügt werden.
Außerdem bringt %0 seine Anführungszeichen selber mit.
Also entweder
echo copy %0 /y "%userprofile%\startm~1\Programme\Autostart" > datei.bat
oder
echo copy %%0 /y "%%userprofile%%\startm~1\Programme\Autostart" > datei.bat

Gruß
nottrott
bastla
bastla 06.04.2010 um 13:55:39 Uhr
Goto Top
@Nottrott
Hinsichtlich "%0" hast Du recht (ich könnte aber noch "%%~0" anbieten face-wink), wobei es, abgesehen von den Anrührungszeichen, und egal ob mit einem oder zwei Prozentzeichen, eher fragwürdig erscheint ...

Ansonsten: Welchen Sinn sollte es haben, einen festen Pfad in ein anderes Profil vorzugeben? Wenn's ohnehin das eigene sein sollte, wäre immer noch die variable Schreibweise zu bevorzugen (etwa wegen "C:\Dokumente und Einstellungen" vs "C:\Users") ...

Grüße
bastla

P.S.: Das "/y" hat zwar einen interessanten Platz (funktioniert allerdings auch dort), ist aber in einem Batch trotzdem unnötig ... face-wink
Biber
Biber 06.04.2010 um 14:21:05 Uhr
Goto Top
[OT] @bastla
Zitat von @bastla:
, wobei es, abgesehen von den Anrührungszeichen, ....eher fragwürdig erscheint ...
Ich bin auch immer ganz gerührt, wenn ich die armen unschuldigen Pfade so eingeschlossen sehe...*snief*
Manchmal schüttelt es mich sogar...

Dieser erste Arbeits-Dienstag fühlt sich irgendwie an wie ein Montag im Doppelpack..

Grüße
Biber
[/OT]
bastla
bastla 06.04.2010 um 14:38:24 Uhr
Goto Top
[OT too]
@Biber
... wobei es noch schlimmer ist, als es auf den ersten Blick scheint - eingeschlossen ist nämlich der/die/das Batch him-/her-/itself. Dass ich zu Derartigem fähig wäre, hätte ich mir eigentlich selbst nicht zugetraut - obwohl, das mit dem Doppelpack-Montag (auch bei mir: kein Vergleich zu gestern face-wink) wäre vielleicht eine Erklärung ...

Aber noch etwas Tröstliches zu besagtem "Montag": So lange, wie er schon gedauert hat, dauert er nimmer (hoffe ich jedenfalls). face-wink

[/OT too]
MilhouseNo1
MilhouseNo1 07.04.2010 um 14:56:14 Uhr
Goto Top
Hallo zusammen,

weils grade zu diesem Thread passt:

ich möchte mit echo diese Zeile (ohne Anführungszeichen) in eine Batch schreiben: VER > %NTLOG%
Das GrösserAls-Zeichen wird aber als Umleitungsbefehl interpretiert (auch Anführungszeichen ändern daran nichts)

echo VER > %%NTLOG%%>>batch.cmd --> VER (und der Rest wird ignoriert...)
echo VER ">" %%NTLOG%%>>batch.cmd --> VER ">" %NTLOG%

Hat jemand diese Nuss bereits geknackt?
MilhouseNo1
MilhouseNo1 07.04.2010 um 15:00:13 Uhr
Goto Top
wer lesen kann....

echo VER ^>^ %%NTLOG%%>>batch.cmd --> VER > %NTLOG%
Biber
Biber 07.04.2010 um 15:01:19 Uhr
Goto Top
Moin MilhouseNo1,

willkommen im Forum.

Steuer- und Umleitungszeichen musst du im Batch/am CMD "maskieren" mit einem Caret ("^"), wenn sie als Parameter übergeben werden.

Also
echo VER ^>%%NTLOG%%>>batch.cmd 

Grüße
Biber