Batchdatei IF und set für Datei einlesen nicht in einer Zeile kombinierbar?
Hallo zusammen!
Habe dieses Forum in den letzten Wochen viel genutzt um div. Batchdateien zu erstellen. Auf eine Frage konnte ich leider keine Lösung finden:
Ich habe gestern Stunden über einem Problem gebrütet, für das ich nur eine Schmutzlösung gefunden habe:
if exist d:\aktuell\split5.txt set /p aktstrasse=<d:\aktuell\split5.txt
Diese Zeile will einfach nicht funktionieren, bei der Ausführung wird immer eine NULL oder eine EINS irgendwo eingefügt.
Nur eine Schmutzlösung à la:
if exist d:\aktuell\split5.txt goto :aaa
goto :bbb
:aaa
set /p aktstrasse=<d:\aktuell\split5.txt
:bbb
funktionierte.
Ist bei der Syntax oben was falsch?
Habe dieses Forum in den letzten Wochen viel genutzt um div. Batchdateien zu erstellen. Auf eine Frage konnte ich leider keine Lösung finden:
Ich habe gestern Stunden über einem Problem gebrütet, für das ich nur eine Schmutzlösung gefunden habe:
if exist d:\aktuell\split5.txt set /p aktstrasse=<d:\aktuell\split5.txt
Diese Zeile will einfach nicht funktionieren, bei der Ausführung wird immer eine NULL oder eine EINS irgendwo eingefügt.
Nur eine Schmutzlösung à la:
if exist d:\aktuell\split5.txt goto :aaa
goto :bbb
:aaa
set /p aktstrasse=<d:\aktuell\split5.txt
:bbb
funktionierte.
Ist bei der Syntax oben was falsch?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 41144
Url: https://administrator.de/contentid/41144
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Moin bufferm44,
nö, ist alles in Ordnung und richtig so.
Diese "Anzeige"
if exist bla.txt set /p aktstrasse= 0<bla.txt
braucht Dich nicht zu beunruhigen. Das ist nur die Übersetzung des CMD-Interpreters, der messerscharf folgert: Aha, diese Zeile soll den Input an Device 0 (=STDIN) aus einer Datei holen.
Statt über STDIN=Tastatur.
Die gleiche Anzeige bekommst Du, wenn Du in einer Batchdatei stehen hast:
echo bla blubb>nul
Wenn dieser Befehl angezeigt wird (also mal kein "echo off" davor schreiben), dann wird angezeigt:
Hier ist die Umleitung des Outputs Voreinstellung Device 1 = STDOUT = normalerweise Bildschirm.
Und "1" wird jetzt umgeleitet auf das NUL-Device.
Funktionieren wird die Set-Anweisung trotzdem.
Na ja, "trotzdem" stimmt ja eigentlich nicht... sie funktioniert eben.
Gruß
Biber
nö, ist alles in Ordnung und richtig so.
Diese "Anzeige"
if exist bla.txt set /p aktstrasse= 0<bla.txt
braucht Dich nicht zu beunruhigen. Das ist nur die Übersetzung des CMD-Interpreters, der messerscharf folgert: Aha, diese Zeile soll den Input an Device 0 (=STDIN) aus einer Datei holen.
Statt über STDIN=Tastatur.
Die gleiche Anzeige bekommst Du, wenn Du in einer Batchdatei stehen hast:
echo bla blubb>nul
Wenn dieser Befehl angezeigt wird (also mal kein "echo off" davor schreiben), dann wird angezeigt:
>echo bla blubb 1>nul
Hier ist die Umleitung des Outputs Voreinstellung Device 1 = STDOUT = normalerweise Bildschirm.
Und "1" wird jetzt umgeleitet auf das NUL-Device.
Funktionieren wird die Set-Anweisung trotzdem.
Na ja, "trotzdem" stimmt ja eigentlich nicht... sie funktioniert eben.
Gruß
Biber
Jepp.
Obwohl ich vom Kochen mehr verstehe als vom Bätchen.
Schreib Dir einen Dreizeiler:
Das wäre der Output:
Und wenn Du in der zweiten Zeile das "@" wegnimmst, steht dort auch (sinngemäß):
Y:\Eigene Dateien>if exist "C:\DOKUME~1\Biber\LOKALE~1\Temp\VarInFile.txt" set /p varAusDateigelesen= 0<"C:\DOKUME~1\Biber\LOKALE~1\Temp\VarInFile.txt"
Auf jeden Fall aber die "Übersetzung" von "set varname<=file" in "set varname= 0<file"
Warum sollte es auch nicht klappen? Mir erscheint meine Herleitung einleuchtend...
Gruß
Biber
[Edit] Uuups, das sollte eine Antwort auf Deinen vorletzten Kommentar sein,
wo eben noch die Frage stand, ob ich mir sicher wäre...
- den letzten hab ich übersehen, bzw jetzt steht ein anderer Inhalt da...
Egal, jetzt hab ichs gepostet...
Schönes Wochenende. F.
[/Edit]
Obwohl ich vom Kochen mehr verstehe als vom Bätchen.
Schreib Dir einen Dreizeiler:
::----snipp setFromFileTest.bat
@echo der neue Wert der Variablen [aus Datei gelesen] >"\%temp%\VarInFile.txt"
@if exist "%temp%\VarInFile.txt" set /p varAusDateigelesen=<"%temp%\VarInFile.txt"
set varAusDateigelesen
Das wäre der Output:
Y:\Eigene Dateien>set varAusDateigelesen
varAusDateigelesen=der neue Wert der Variablen [aus Datei gelesen]
Und wenn Du in der zweiten Zeile das "@" wegnimmst, steht dort auch (sinngemäß):
Y:\Eigene Dateien>if exist "C:\DOKUME~1\Biber\LOKALE~1\Temp\VarInFile.txt" set /p varAusDateigelesen= 0<"C:\DOKUME~1\Biber\LOKALE~1\Temp\VarInFile.txt"
Auf jeden Fall aber die "Übersetzung" von "set varname<=file" in "set varname= 0<file"
Warum sollte es auch nicht klappen? Mir erscheint meine Herleitung einleuchtend...
Gruß
Biber
[Edit] Uuups, das sollte eine Antwort auf Deinen vorletzten Kommentar sein,
wo eben noch die Frage stand, ob ich mir sicher wäre...
- den letzten hab ich übersehen, bzw jetzt steht ein anderer Inhalt da...
Egal, jetzt hab ichs gepostet...
Schönes Wochenende. F.
[/Edit]