echo Umleitungsfehler unterdrücken
moin ich melde mich ma wieder zurück...
ich denk das problem wird sofort am titel dieses topics klar...
hi alle zusammen...
ich hab folgendes problem:
ich erstelle einen ordner, allerdings weiß ich noch nicht ob ich dafür auch ddie nötigen nutzerrechte habe, und ob der ordner nicht schon vorhanden ist.
fall: ordner noch nicht vorhanden und keine schreibrechte
nun bekomme ich 2 fehlernmeldungen:
"Zugriff verweigert" und "Das System kann den angegebenen Pfad nicht finden."
die zweite Meldung stört mich, da ich sei nicht abstellen kann.
probiert habe ich schon 2>nul, if not %errorlevel%==1, 3>nul und 4>nul ...
auch google konnte mir leider nicht helfen deshalb stelle ich diese frage ins forum.
postet bitte was euch dazu einfällt.
gruß, Ph
ich denk das problem wird sofort am titel dieses topics klar...
hi alle zusammen...
ich hab folgendes problem:
ich erstelle einen ordner, allerdings weiß ich noch nicht ob ich dafür auch ddie nötigen nutzerrechte habe, und ob der ordner nicht schon vorhanden ist.
fall: ordner noch nicht vorhanden und keine schreibrechte
if not exist "%phlegdir%" (md "%phlegdir%"
echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt")
nun bekomme ich 2 fehlernmeldungen:
"Zugriff verweigert" und "Das System kann den angegebenen Pfad nicht finden."
die zweite Meldung stört mich, da ich sei nicht abstellen kann.
probiert habe ich schon 2>nul, if not %errorlevel%==1, 3>nul und 4>nul ...
auch google konnte mir leider nicht helfen deshalb stelle ich diese frage ins forum.
postet bitte was euch dazu einfällt.
gruß, Ph
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 60573
Url: https://administrator.de/contentid/60573
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
15 Kommentare
Neuester Kommentar
Hi Phlegma,
um deinen Code als solchen zu Kennzeichnen, nutze bitte den Code-Tag, steht in den im Forum verwendeten Formatierungen in den Beiträgen.
Du willst einen Ordner ohne Schreibrechte anlegen und wunderst dich dann über die Fehlermeldung? *g*
Mfg
Mitchell
um deinen Code als solchen zu Kennzeichnen, nutze bitte den Code-Tag, steht in den im Forum verwendeten Formatierungen in den Beiträgen.
fall: ordner noch nicht vorhanden und keine
schreibrechte
schreibrechte
Du willst einen Ordner ohne Schreibrechte anlegen und wunderst dich dann über die Fehlermeldung? *g*
Mfg
Mitchell
Moin Phlegma,
WTF is "Google"?
Ich würde es so lösen:
...zuerst, falls das Verzeichnis nicht existiert, versuchen es anzulegen
... danach, falls es existiert, etws hineinschreiben.
Den Verbleibenden Fall (Verzeichnis existiert nicht UND kann auch nicht angelegt werden, kannst Du ggf. auch noch abfangen:
... aber Du kannst (aus nachvollziehbaren Gründen) diese Meldung nicht in eine Logdatei nach %phlegDir% schreiben.
Gruss
Biber
WTF is "Google"?
Ich würde es so lösen:
@if not exist "%phlegdir%" md "%phlegdir%" 2>nul
@if exist "%phlegdir%" echo Hey du hast den Phlegma Ordner gefunden >"%phlegdir%\README.txt"
...zuerst, falls das Verzeichnis nicht existiert, versuchen es anzulegen
... danach, falls es existiert, etws hineinschreiben.
Den Verbleibenden Fall (Verzeichnis existiert nicht UND kann auch nicht angelegt werden, kannst Du ggf. auch noch abfangen:
@if not exist "%phlegdir%" md "%phlegdir%" 2>nul || @echo %phlegdir% konnte nicht angelegt werden!
Gruss
Biber
Hallo Phlegma!
Dann meinst Du also eher diese Version:
Grüße
bastla
Dann meinst Du also eher diese Version:
if exist "%phlegdir%" goto :weiter
md "%phlegdir%" || goto :weiter
echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt"
echo Zeile 2 >>"%phlegdir%\README.txt"
echo Zeile 3 >>"%phlegdir%\README.txt"
echo Zeile 4 >>"%phlegdir%\README.txt"
:weiter
...
Grüße
bastla
Hallo Phlegma!
Noch zum (nicht möglichen) "Abschalten": Biber kann das sicher im Detail erklären - meine Interpretation ist, dass sich ein "2>nul" auf das "echo" beziehen würde, welches aber fehlerfrei ausgeführt wird - das Problem entsteht ja erst durch die Umleitung der Ausgabe zu einem ungeeigneten Ziel.
Grüße
bastla
... die du dir ausgedacht hast?
Mit "Version" meinte ich eine von mehreren möglichen Umsetzungen - und ja, ich gebe zu, dass ich mir diese Variante ausgedacht habe ... und soll das heißen das die fehlerausgabe für die umleitung nicht abzuschalten ist?
... nicht abzuschalten, aber zu vermeiden, wie mein Lösungsansatz hoffentlich gezeigt hat.Noch zum (nicht möglichen) "Abschalten": Biber kann das sicher im Detail erklären - meine Interpretation ist, dass sich ein "2>nul" auf das "echo" beziehen würde, welches aber fehlerfrei ausgeführt wird - das Problem entsteht ja erst durch die Umleitung der Ausgabe zu einem ungeeigneten Ziel.
Grüße
bastla
@Biber
Anforderung war, dass ein ev Fehler bei "md" angezeigt wird, ansonsten müsste auch ein
genügen - ein erfolgreiches "md" erzeugt ja eigentlich keine Ausgabe.
Die Schreibweise
meine ich noch nie gesehen zu haben - was bewirkt sie?
Grüße
bastla
Anforderung war, dass ein ev Fehler bei "md" angezeigt wird, ansonsten müsste auch ein
md "%phlegdir%" 2>nul
Die Schreibweise
2>&1
Grüße
bastla
@bastla
Das ermöglicht die Trennung von Info/Fortschrittsmeldungen (die kannst Du mit ">nul" entsorgen) und den Meldungen bei Fehlern.
Die kannst Du mit "2>mein.log" seperat umleiten.
Wenn Du z.B. irgendwelche "net use x: \\blabla\share"-Meldungen im Erfolgsfall NICHT in eine Logdatei schreiben willst, aber die Meldungen, wenn es schiefgeht, würdest Du schreiben:
Willst Du beides speichern:
...was dann bedeutet:
Wenn die Umleitung nicht in mein.log erfolgt, sondern nach ">NUL", dann lässt sich auch schreiben:
Gruß
Biber
Anforderung war, dass ein ev Fehler bei "md" angezeigt wird, ....
Okay, dann sollte nicht zu ":weiter " gesprungen werden, sondern zu ":zeigeMdFehler" und von dort aus zu ":weiter"ansonsten müsste auch ein md "%phlegdir%" 2>nul genügen
- ein erfolgreiches "md" erzeugt ja eigentlich keine Ausgabe.
Das stimmt. die Umleitung von 1 (STDOUT) ist überflüssig.- ein erfolgreiches "md" erzeugt ja eigentlich keine Ausgabe.
Die Schreibweise ">nul 2>&1" meine ich noch nie gesehen zu haben - was bewirkt sie?
Meist werden ja- Kanal 1 (STDOUT = CON: = Bildschirm) für Info-Meldungen und
- Kanal 2 (STDERR = CON: = Bildschirm) für Fehlermeldungen
Das ermöglicht die Trennung von Info/Fortschrittsmeldungen (die kannst Du mit ">nul" entsorgen) und den Meldungen bei Fehlern.
Die kannst Du mit "2>mein.log" seperat umleiten.
Wenn Du z.B. irgendwelche "net use x: \\blabla\share"-Meldungen im Erfolgsfall NICHT in eine Logdatei schreiben willst, aber die Meldungen, wenn es schiefgeht, würdest Du schreiben:
net use x: \\blabla\share >nul 2>mein.log
net use x: \\blabla\share >>mein.log 2>&1
- leite Kanal 1= STDOUT um nach Datei mein.log (anhängend, falls die Datei schon existiert)
- leite zusätzlich Kanal 2 um in den bereits offenen Kanal 1 ("bündele Kanäle")
Wenn die Umleitung nicht in mein.log erfolgt, sondern nach ">NUL", dann lässt sich auch schreiben:
net use x: \\blabla\share >Nul 2>Nul
Bei einer Datei würde das zu einem Fehler führen ("Datei ist bereits geöffnet") net use x: \\blabla\share >mein.log 2>mein.log
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
Gruß
Biber
Hallo Phlegma!
So sollte es eigentlich das tun, was Du angeblich willst:
Grüße
bastla
So sollte es eigentlich das tun, was Du angeblich willst:
:: PHLEGDIR / ZUGRIFF
@echo off & setlocal
cls
echo.
echo Zugriff testen...
echo.
set "phlegdir=%windir%\Qi"
if exist "%phlegdir%" goto :weiter
call :Make
if exist "%phlegdir%" goto :weiter
set "phlegdir=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Qi"
call :Make
if exist "%phlegdir%" goto :weiter
set "phlegdir=%userprofile%\Eigene Dateien\Qi"
call :Make
if exist "%phlegdir%" goto :weiter
title zugriff - Ph - No Rights
echo.
echo blabla
echo ..
set "nr=1" & rem nr ist die no-rights variable!
pause >nul )
:weiter
pause
goto :eof
:Make
md "%phlegdir%" 2>nul || goto :eof
echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt"
echo 2 >>"%phlegdir%\README.txt"
echo 3 >>"%phlegdir%\README.txt"
echo viel Spaá noch, Ph >>"%phlegdir%\README.txt"
goto :eof
Grüße
bastla