anmelder
Goto Top

Leerzeile und reservierte Zeichen in Datei schreiben

Hallo,

ich verstehe das mit der Maskierung nicht. Ich versuche hier eine Leerzeile und von der Eingabeaufforderung reservierte Zeichen in eine Batch Datei zu schreiben aber die Zeichen werden aufgelöst und ausgeführt bevor sie geschrieben werden.


cls
echo off

REM Folgende Leerzeilen nicht entfernen
SET NeueZeile=^


REM Ende Leerzeichen nicht entfernen

echo aa >test.bat

REM Ende Leerzeichen nicht entfernen

REM Es wird nur REM geschrieben
ECHO REM >NUL 1>NUL 2>NUL >> test.bat


REM Versuch einer Leerzeile
echo %NeueZeile% >>test.bat
echo >>test.bat


REM Es wird der tatsächliche Programmpfad in die Datei geschrieben, nicht diese Zeichen: %~d0%~p0
ECHO SET Programmdateipfad=%~d0%~p0 >> test.bat

Content-ID: 519030

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

Ausgedruckt am: 05.11.2024 um 08:11 Uhr

TK1987
Lösung TK1987 26.11.2019 aktualisiert um 16:37:21 Uhr
Goto Top
Eine Leere Zeile schreiben geht einfach mit
echo. >>test.bat
Beachte, dass du hier kein Leerzeichen zwischen dem echo und dem Punkt lassen darfst.
Zitat von @anmelder:
REM Es wird der tatsächliche Programmpfad in die Datei geschrieben, nicht diese Zeichen: %~d0%~p0
ECHO SET Programmdateipfad=%~d0%~p0 >> test.bat
Hier müssen einfach die Prozentzeichen verdoppelt werden.
ECHO SET Programmdateipfad=%%~d0%%~p0 >> test.bat

ECHO REM >NUL 1>NUL 2>NUL >> test.bat
hier müssen die ">", die geschrieben werden sollen, escaped werden. Darüber hinaus ist >NUL das selbe wie 1>NUL, also doppelt gemoppelt. Allerdings muss ich mich fragen, wieso du REM, welches ohnehin ignoriert wird und daher gar keine Ausgabe haben kann extra umleitest?!
ECHO REM 1^>NUL 2^>NUL >> test.bat

REM Ende Leerzeichen nicht entfernen
echo aa >test.bat
Hier verstehe ich dein Problem nicht. Er macht doch am Ende ein Leerzeichen?!
anmelder
anmelder 26.11.2019 um 16:45:05 Uhr
Goto Top
Ja danke das funktioniert alles.

Die Umleitung des REM verhindert eine Fehlermeldung wenn eine Datei im UTF-8 Format gespeichert wird. Es kommt sonst die Meldung:

"Der Befehl "´╗┐rem" ist entweder falsch geschrieben oder konnte nicht gefunden werden."

Hier verstehe ich dein Problem nicht. Er macht doch am Ende ein Leerzeichen?!

Ja das war falsch formatiert. Dieser Code sollte eine Leerzeile erzeugen, tat es aber nicht. Zwischen dem SET und dem REM befinden sich ein unsichtbarer Zeilenumbruch der in anderem Zusammenhang funktionierte.
SET NeueZeile=^


REM Ende Leerzeichen nicht entfernen
echo %NeueZeile% >>test.bat

Danke