bufferm44
Goto Top

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?

41cf67d46f8cff139b2870814596a78a-null

Content-ID: 41144

Url: https://administrator.de/forum/batchdatei-if-und-set-fuer-datei-einlesen-nicht-in-einer-zeile-kombinierbar-41144.html

Ausgedruckt am: 23.12.2024 um 05:12 Uhr

Biber
Biber 29.09.2006 um 13:04:03 Uhr
Goto Top
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:
>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
bufferm44
bufferm44 29.09.2006 um 17:22:05 Uhr
Goto Top
Hm, Du hast Recht, habs noch mal getestet...

Aber warum das bei mir erst nicht ging - keine Ahnung, werds noch mal im Code hübsch machen und beobachten face-smile

Danke erstmal!
Biber
Biber 29.09.2006 um 17:59:33 Uhr
Goto Top
Jepp.
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... face-big-smile

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]
bufferm44
bufferm44 01.10.2006 um 22:29:58 Uhr
Goto Top
Sorry dass ich Dir den Kommentar während Deiner Antwort weggezogen habe :D

Ich hatte halt mehrere Stunden getestet und irgendwann als ich diese Schmutzlösung gebastelt hatte, ging das Ganze. Vielleicht war ich einfach etwas überarbeitet face-smile
Biber
Biber 02.10.2006 um 08:06:20 Uhr
Goto Top
Na ja, bufferm44,

trotzdem schön, dass wir darüber gesprochen haben... face-wink

Ich setze den Beitrag mal auf "Gelöst" und "Geschlossen".
Auch wenn zur eigentlichen Problemlösung wahrscheinlich das letzte Wochenende mehr beigetragen hat als ich...

Gruß
Biber