Variablen in Datei schreiben, auslesen und verarbeiten, inkl. Struktur-Problem
Ich weiß, sowas wird nicht gern gesehen, jedoch...: Dringend!
Hallo zusammen,
ich bin gerade dabei ein Script in Batch zu schreiben, für eine gewisse Aufgabe im Programm fehlt es mir aber an Ideen:
Man gibt den Server sowie Ordnernamen an, der Ordner wird gesucht und der Pfad in eine Konfigurationsdatei geschrieben. Wenn der Ordner allerdings gar nicht erst gefunden wird, soll ein Fehler ausgegeben werden. Wie stelle ich das denn am Besten an?
Wie das mit Errorleveln hier funktionieren könnte weiß ich nicht...
Gute Nacht zusammen,
h
edit:
entschuldigt das dringend, ist es jedoch leider ;(
Hallo zusammen,
ich bin gerade dabei ein Script in Batch zu schreiben, für eine gewisse Aufgabe im Programm fehlt es mir aber an Ideen:
:config
title=Startmen-Konfiguration
echo.
set /p server=Server angeben! (Z.B.: \\sstrf028\e010_hbr$\)
set /p ordner=Ordner angeben! (Z.B.: Startmen Raum 249)
dir %server% /s /b | find "%ordner%" | find /v "%ordner%\" > start.cfg
echo %ordner% >> start.cfg
attrib +s +h start.cfg
goto eof
Man gibt den Server sowie Ordnernamen an, der Ordner wird gesucht und der Pfad in eine Konfigurationsdatei geschrieben. Wenn der Ordner allerdings gar nicht erst gefunden wird, soll ein Fehler ausgegeben werden. Wie stelle ich das denn am Besten an?
Wie das mit Errorleveln hier funktionieren könnte weiß ich nicht...
Gute Nacht zusammen,
h
edit:
entschuldigt das dringend, ist es jedoch leider ;(
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129919
Url: https://administrator.de/forum/variablen-in-datei-schreiben-auslesen-und-verarbeiten-inkl-struktur-problem-129919.html
Ausgedruckt am: 29.04.2025 um 20:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo amortillado und willkommen im Forum!
Wenn Deine Zeile 6 für Dich (auch ohne "
Grüße
bastla
Wenn Deine Zeile 6 für Dich (auch ohne "
/i
") funktioniert, könntest Du es so versuchen::config
title=Startmen-Konfiguration
echo.
set /p server=Server angeben! (Z.B.: \\sstrf028\e010_hbr$\)
set /p ordner=Ordner angeben! (Z.B.: Startmen Raum 249)
set "Pfad="
for /f "delims=" %%i in ('dir %Server% /s /b 2^>nul^|find "%Ordner%"^|find /v "%Ordner%\"') do set "Pfad=%%i"
if defined Pfad (
>start.cfg echo %Pfad%
>>start.cfg echo %Ordner%
attrib +s +h start.cfg
) else (
echo %ordner% nicht gefunden!
)
goto :eof
bastla
Hallo amontillado!
Vorweg ein Hinweis: Auch wenn Du den Titel dem erweiterten Inhalt angepasst hast, wäre es sinnvoller, einen neuen Thread zu erstellen - damit erreichst Du mehr potenzielle Helfer ...
Zu Deinen Fragen:
Nach "
Grüße
bastla
Vorweg ein Hinweis: Auch wenn Du den Titel dem erweiterten Inhalt angepasst hast, wäre es sinnvoller, einen neuen Thread zu erstellen - damit erreichst Du mehr potenzielle Helfer ...
Zu Deinen Fragen:
* Was bedeutet hier [ dir %Server% /s /b 2^>nul^ ] das ^ und wieso gibst du es in "nul" aus?
Da innerhalb der "for /f
"-Schleife temporär eine neue CMD-Instanz aufgerufen wird, müssen einige Sonderzeichen "maskiert" werden, damit sie (noch) nicht als Steuerzeichen interpretiert, sondern unverändert "weitergereicht" werden.Nach "
nul
" umgeleitet wird nur (der Ordnung halber) die auf Kanal 2 (STDERR
) ausgegebene Fehlermeldung, wenn %Server% nicht gefunden werden konnte (diese Meldung soll ja auf keinen Fall weiterverarbeitet werden).* Welche Funktion hat das ' Zeichen [ find /v "%Ordner%\"' ]
Damit wird das am Beginn des Befehlsblocks in der Klammer gesetzte andere ' geschlossen - die zwischen diesen Zeichen stehenden Anweisungen werden in der schon beschriebenen weiteren CMD-Instanz ausgeführt und deren Ergebnis wird zeilenweise von der "for /f
"-Schleife übernommen.Grüße
bastla