Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

echo Umleitungsfehler unterdrücken

Frage Entwicklung Batch & Shell

Mitglied: Phlegma

Phlegma (Level 1) - Jetzt verbinden

05.06.2007, aktualisiert 07.06.2007, 6778 Aufrufe, 15 Kommentare

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

01.
if not exist "%phlegdir%" (md "%phlegdir%" 
02.
            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
Mitglied: Mitchell
05.06.2007 um 08:22 Uhr
Hi Phlegma,

um deinen Code als solchen zu Kennzeichnen, nutze bitte den Code-Tag, steht in den im Forum verwendeten Formatierungen.

fall: ordner noch nicht vorhanden und keine
schreibrechte

Du willst einen Ordner ohne Schreibrechte anlegen und wunderst dich dann über die Fehlermeldung? *g*

Mit freundlichen Grüßen

Mitchell
Bitte warten ..
Mitglied: Biber
05.06.2007 um 08:29 Uhr
Moin Phlegma,

WTF is "Google"?
Ich würde es so lösen:
01.
@if not exist "%phlegdir%" md "%phlegdir%" 2>nul 
02.
@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:
01.
@if not exist "%phlegdir%" md "%phlegdir%" 2>nul || @echo %phlegdir% konnte nicht angelegt werden!
... aber Du kannst (aus nachvollziehbaren Gründen) diese Meldung nicht in eine Logdatei nach %phlegDir% schreiben.

Gruss
Biber
Bitte warten ..
Mitglied: Phlegma
05.06.2007 um 20:41 Uhr
oO...
ihr habt mich beide nicht richtig verstanden vllt zuwenig infos...

achja und zu: wtf is google?:
jah sag mir ma nen anständgien suchbegriff der etwas liefert außer schlechten batch tutorials.

also
danke biber, deine lösung is schon nah dran

genau genommen teste ich nutzungsrechte indem ich versuche ordner zu erstellen..
-wenn der ordner existiert (diesen teil habe ich nicht gepostet) ist alles in ordnung... dann wird weiter gemacht (das readme file müsste dementsprechend sowieso schon dort sein und nicht nochmal erzeugt werden.
-wenn rechte vorhanden sind wird der ordner erstellt und das readme file auch.
-wenn der ordner nicht erstellt werden kann kommt entsprechend die meldung: zugriff verweigert, das ist ok die meldung kann ich gebrauchen (nur die andere nicht..).
allerdings versuche ich dann auch noch das readme file zu erstellen und das scheitert mit nicht nur einer häßlichen fehlermeldung (insgesamt sind es 4 zeilen die rein sollen...).

so nun möchte ich einfach die fehlermeldung weg haben. zudem soll nicht jedesmal das file neu erstellt werden.

thx, Ph
Bitte warten ..
Mitglied: bastla
06.06.2007 um 00:19 Uhr
Hallo Phlegma!

Dann meinst Du also eher diese Version:
01.
if exist "%phlegdir%" goto :weiter 
02.
md "%phlegdir%" || goto :weiter 
03.
echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt" 
04.
echo Zeile 2 >>"%phlegdir%\README.txt" 
05.
echo Zeile 3 >>"%phlegdir%\README.txt" 
06.
echo Zeile 4 >>"%phlegdir%\README.txt" 
07.
:weiter 
08.
...
Grüße
bastla
Bitte warten ..
Mitglied: Phlegma
06.06.2007 um 01:17 Uhr
oO cool was macht || nochmal?
oder meinst du das jez dass das meine version wäre oder die du dir ausgedacht hast?


und soll das heißen das die fehlerausgabe für die umleitung nicht abzuschalten ist?
Bitte warten ..
Mitglied: bastla
06.06.2007 um 01:36 Uhr
Hallo Phlegma!

... 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 ...
"||" entspricht einem "if errorlevel 1", der darauf folgende Befehl wird also ausgeführt, wenn ein Fehler aufgetreten ist (das Gegenteil wäre "&&").
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
Bitte warten ..
Mitglied: Biber
06.06.2007 um 10:59 Uhr
Moin Phlegma und bastla,

dann würde ich noch in bastlas Variante ändern:
STREICHE: md "%phlegdir%" || goto :weiter
SETZE: md %phlegdir%>nul 2>&1 || goto :weiter
-oder-
SETZE: md %phlegdir%>nul 2>nul || goto :weiter

Dann sollte Deine Anforderung erfüllt sein.

Gruss
Biber
Bitte warten ..
Mitglied: bastla
06.06.2007 um 11:42 Uhr
@Biber
Anforderung war, dass ein ev Fehler bei "md" angezeigt wird, ansonsten müsste auch ein
01.
md "%phlegdir%" 2>nul
genügen - ein erfolgreiches "md" erzeugt ja eigentlich keine Ausgabe.

Die Schreibweise
01.
2>&1
meine ich noch nie gesehen zu haben - was bewirkt sie?

Grüße
bastla
Bitte warten ..
Mitglied: Phlegma
06.06.2007 um 13:16 Uhr
Die Schreibweise
01.
2>&1
>meine ich noch nie gesehen zu
haben - was bewirkt sie?

das würde mich auch interessieren...
zudem würde ich mich auch über eine aufklärung freuen wieso eine fehlerunterdrückung bei der ausgabe nicht möglich ist...

vielen dank ich werde die lösungen ausprobieren

gruß, Ph
Bitte warten ..
Mitglied: Biber
06.06.2007 um 13:17 Uhr
@bastla
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.

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
von Programmen für Bildschirmausgaben genutzt.

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:
01.
net use x: \\blabla\share >nul 2>mein.log
Willst Du beides speichern:
01.
net use x: \\blabla\share >>mein.log 2>&1
...was dann bedeutet:
  • 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")
01.
 net use x: \\blabla\share >mein.log 2>mein.log 
02.
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
Gruß
Biber
Bitte warten ..
Mitglied: Phlegma
06.06.2007 um 13:27 Uhr
hm...
schön.

jez fehlt nurnoch die erklärung nach der ich kurz vor deinem post gefragt habe... bitte :D

mich würde jetzt noch interessieren ob das || auch in einem if befehl funktioniert denn das if %errorlevel%==1 hat nicht funktioniert, wohl weil das innerhalb des if behfels nicht mehr abgefragt wird... somit blieb im if befehl der errorlevel bei 0 obwohl der zugriff bei der ordnererstellung verweigert wurde.
??

gruß, Ph
Bitte warten ..
Mitglied: bastla
06.06.2007 um 16:13 Uhr
@Biber
Danke für die Info.

Grüße
bastla
Bitte warten ..
Mitglied: Phlegma
06.06.2007 um 21:09 Uhr
ok ich poste mal weiter ausholend meinen abschnitt und brauche dann die anpassung...
ich habe grad n bischen zeit.. blicke aber nicht durch ...( vllt liegt es auch am alkohol... ;D..nein ich hab nicht viel getrunken sonst könnte ich dash ier nicht schreiben....)

hier mein code:

01.
::      PHLEGDIR / ZUGRIFF 
02.
        cls 
03.
        echo. 
04.
        echo Zugriff testen... 
05.
        echo. 
06.
        set "phlegdir=%windir%\Qi" 
07.
        if not exist "%phlegdir%" ( md "%phlegdir%" 
08.
                                  echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt" 2>nul 
09.
                                  echo 2 >>"%phlegdir%\README.txt" 2>nul 3>nul 4>nul 
10.
                                  echo 3 >>"%phlegdir%\README.txt" 2>nul 
11.
                                  echo viel Spaá noch, Ph >>"%phlegdir%\README.txt" 2>nul ) 
12.
        if not exist "%phlegdir%" set "phlegdir=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Qi" 
13.
        if not exist "%phlegdir%" ( md "%phlegdir%" 
14.
                                  echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt" 
15.
                                  echo 2>>"%phlegdir%\README.txt" 2>nul 
16.
                                  echo 3 >>"%phlegdir%\README.txt" 2>nul 
17.
                                  echo viel Spaá noch, Ph >>"%phlegdir%\README.txt" 2>nul ) 
18.
        if not exist "%phlegdir%" set "phlegdir=%userprofile%\Eigene Dateien\Qi" 
19.
        if not exist "%phlegdir%" ( md "%phlegdir%" 
20.
                                  echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt" 
21.
                                  echo 2 >>"%phlegdir%\README.txt" 
22.
                                  echo 3>>"%phlegdir%\README.txt" 
23.
                                  echo viel Spaá noch, Ph >>"%phlegdir%\README.txt" ) 
24.
        if not exist "%phlegdir%" ( title zugriff - Ph - No Rights 
25.
                                  echo. 
26.
                                  echo  blabla 
27.
                                  echo  .. 
28.
                                  set "nr=1" & rem nr ist die no-rights variable! 
29.
                                  pause >nul ) 
30.
        pause
ich hab ein bischen unnötige infos gekürzt ich hoffe es wird nun ersichtlich was ich vorhabe.
ich möchte die fehlermeldungen bei den echo befhelen mit umleitung weghaben.
Bitte warten ..
Mitglied: bastla
07.06.2007 um 20:31 Uhr
Hallo Phlegma!

So sollte es eigentlich das tun, was Du angeblich willst:
01.
::      PHLEGDIR / ZUGRIFF 
02.
        @echo off & setlocal 
03.
		cls 
04.
        echo. 
05.
        echo Zugriff testen... 
06.
        echo. 
07.
        set "phlegdir=%windir%\Qi" 
08.
		if exist "%phlegdir%" goto :weiter 
09.
		call :Make 
10.
		if exist "%phlegdir%" goto :weiter 
11.
		set "phlegdir=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Qi" 
12.
		call :Make 
13.
		if exist "%phlegdir%" goto :weiter 
14.
		set "phlegdir=%userprofile%\Eigene Dateien\Qi" 
15.
		call :Make 
16.
		if exist "%phlegdir%" goto :weiter 
17.
		title zugriff - Ph - No Rights 
18.
        echo. 
19.
        echo  blabla 
20.
        echo  .. 
21.
        set "nr=1" & rem nr ist die no-rights variable! 
22.
        pause >nul ) 
23.
        :weiter 
24.
		pause 
25.
		goto :eof 
26.
		:Make 
27.
        md "%phlegdir%" 2>nul || goto :eof 
28.
        echo Hey du hast den Phlegma Ordner gefunden^^^^ >"%phlegdir%\README.txt" 
29.
        echo 2 >>"%phlegdir%\README.txt" 
30.
        echo 3 >>"%phlegdir%\README.txt" 
31.
        echo viel Spaá noch, Ph >>"%phlegdir%\README.txt" 
32.
		goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Phlegma
07.06.2007 um 23:47 Uhr
super ich verstehe auch was du mir da gepostet hast keine weitern erklärungen nötig vielen dank,
ich glaub ich hab es aus dem falschen standpunkt heraus gemacht und ich arbeite nicht viel mit calls.

vielen dank!
Ph
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Echo in Batch schreibt vorab eine 1 (1)

Frage von chappy72 zum Thema Batch & Shell ...

Windows Userverwaltung
gelöst Anmeldeskript fragt für das mappen nach einem User und Pw unterdrücken (9)

Frage von M.Marz zum Thema Windows Userverwaltung ...

Sonstige Systeme
Amazons Echo im Test: Beim Dankesagen ertappt (4)

Link von Frank zum Thema Sonstige Systeme ...

Batch & Shell
gelöst CMD Echo in Fett, Kursiv oder unterstrichen ausgeben (8)

Frage von Luuke257 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...