24855
Goto Top

In Batch testen ob Laufwerksbuchstabe einem Netzlaufwerk zugeordnet

Hallo Leute,

ich möchte in einer Batch überprüfen, ob ein Buchstabe schon einem Laufwerk zugeordnet ist..
eigentlich müsste es doch wie bei einem normalen Ordner funktionieren, in dem ich überprüfe, ob es in dem Pfad ein "null" device gibt ... problem .. er sagt mir "/nul" ist an dieser Stelle syntaktisch nicht verarbeitbar... ???? face-sad
.. mein Buchsatabe ist hier "i" ich will auf diese Art und Weise 2 Buchstaben durchtesten und zur Not auf einen 3. gehen .. einer muss ja mal frei sein
...
if (exist %i:%\nul) goto iistda Else (goto iistnichtda)
...

thx 4 Help

Janosch


edit ..als ich meinen Beitrag noch mal las .. in eurer Schrift art fiel mir auf das die Klammer vor der Bedingung stand .. muss nochmals testen .. aber ich denke, das ist schon die Lösung

Content-Key: 27518

Url: https://administrator.de/contentid/27518

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: meinereiner
meinereiner 06.03.2006 um 16:07:16 Uhr
Goto Top
if exist I:\NUL

geht bei mir. face-wink
Mitglied: Biber
Biber 06.03.2006 um 16:31:37 Uhr
Goto Top
...oder, um meinereiners Gedanken fortzuführen und 3 Laufwerke I:, J: und M: zu prüfen...

For %%x in ( I J M) do if not exist %%x:\nul echo Kein Lw %%x:\ vorhanden!

HTH Biber
Mitglied: Hummel85
Hummel85 06.03.2006 um 16:42:34 Uhr
Goto Top
Hallo WI#Janosch.

Hast du am Anfang deiner Batch die Variable %i:% definiert?

Du kannst also die Sache auf 2 arten angehen.

1. Variante du legst am anfang fest welche Laufwerke du testen willst
set Laufwerk1=I:
set Laufwerk2=K:
set Laufwerk3=L:

if not exist %laufwerk1% goto I_frei
if not exist %laufwerk2% goto K_frei
if not exist %Laufwerk3% goto L_frei
goto nicht_da

:I_frei
REM Hier kommen die Befehle hin die Ausgeführt werden sollen wenn I: frei ist.
exit

:K_frei
REM Hier kommen die Befehle hin die Ausgeführt werden sollen wenn K: frei ist.
exit

:L_frei
REM Hier kommen die Befehle hin die Ausgeführt werden sollen wenn L: Frei ist.
exit

:nicht_da
REM Hier kommen die Befehle hin die Ausgeführt werden sollen wenn keiner der 3 Laufwerke frei ist.
exit


Du kannst das Ganze auch machen in dem du den set Befehl weg lässt und nur nach den Laufwerken an sich suchst.

Also nur mal so als Beispiel
if not exist I: goto I_Frei


Das sind meine Vorschläge es gibt noch mehr aber es fällt mir kein weiterer ein.
Ich Hoffe das die dieser Kommentar hilft.
Mitglied: 24855
24855 06.03.2006 um 17:47:50 Uhr
Goto Top
Hi Leute ihr seit echt spitze ... soviel Lösungen in der Zeit .. ich muss beschähmt zugeben, es etwas zu einfach gesehen zu haben...

also auf der Maschine geht lokal!!!!! folgendes:

if exist i:\nul goto iistda
if not exist i:\nul goto iistnichtda

:iistnichtda
echo i
goto kopiert

:iistda
if exist j:\nul goto jistda
if not exist j:\nul goto jistnichtda

goto jistnichtda
echo j

goto kopiert

:jistda
echo h
goto kopiert

:jistnichtda
echo j

:kopiert


pause



nur leider hab ich nicht bedacht, dass mich das nicht weiter bringt, die Batch welche das Netzlaufwerk braucht um ein Logfile "nachhause" zu kopieren, wird von PSexec.exe unterstützt, remote auf dem Client gefahren ... und leider muss es wohl so sein, dass der lokale User seine Netzlaufwerke sehen kann, auch aus der shell, aber wenn ich mich mit dem selben user remote connecte und mein Loggin file nach getaner Arbeit kopieren will, seh ich keines der Netzlaufwerke, welche in "use" sind .. demzufolge nimmt das Script "i", "i" ist aber belegt, also Fehler, Script hängt... grummel


jetzt muss ich mir erst mal was Überlegen wie ich das anders checken kann, ob das Laufwerk vorhanden ist, vielleicht mit dem Errorlevel von irgenteiner aktiondie nicht zum Abbruch der Verarbeitung führt.. ich hoffe mir kann noch wer folgen .. ich sitz seit fast 9 Stunden in nem schlecht gelüftetene Serverraum und hab langsam "Gehirngulasch" face-smile .. mach jetz terst mal Feierabend .. wenn also wer ne Idee hat, hat bis morgen zeit .. thx
Mitglied: Hummel85
Hummel85 07.03.2006 um 07:25:15 Uhr
Goto Top
Hallo WI#Janosch.

Was Hällst du denn davon einfach die batch die du hast auf deinem Rechner zu hause ausführen lässt?

Kannst du uns mal genau erklären was du vor hast! Also ich für mein Teil verstehe nicht was daran nicht geht.
Mitglied: 24855
24855 07.03.2006 um 09:26:56 Uhr
Goto Top
ok wenn das nicht verständlich war, probiere ich es nocheinmal zu erklären.

Die oben von mir gepostete Lösung funktioniert! Sie funktioniert aber nur, wenn man sie ausführt wenn man direkt vor einem Rechner sitzt. Also lokal als User angemeldet ist.
Ich habe aber das Problem,das ich meine Batch remote starte, also mich mit psexec von der ferne connecte, und die Batch dann auf dem Rechner auf den ich mich connectet habe lokal starte, diese entfernt dort einige veraltete Tools und erzeugt ein errorlog, dieses Log muss ich dann an den entfernten Rechner schicken, von dem aus alles initiert wurde.

So zum Problem:
Wenn ich remote connectet bin erkennt er die Netzlaufwerke die schon benutzt werden nicht mit der Lösung von oben die so schön ist - es geht nicht!

ALso lautet die Frage ob man probiert ein Netzlauf mit Net use "zu mounten" und dann ggf das errorlevel händelt und darauf basierend eine routine bekommt mit der man "remote" nach belegten Netzlaufwerken sucht ???? .. ich hoffe ich habe es jetzt nachvollziehbarer schildern können... face-sad
Mitglied: Hummel85
Hummel85 07.03.2006 um 09:57:47 Uhr
Goto Top
Also wenn ich das jetzt richtig verstanden habe willst du die batch (zum testen ob die laufwerke schon belegt sind) auf dem anderen ausführen.

Warum kopierst du nicht die batch auf den anderen Rechner und startest sie dann via Remote auf diesem rechner.

Nachdem die Errorlog kopiert wurde kannst du das netzlaufwerk unmounten und die Batch löschen.

Wäre jetzt mein vorschlag.
Mitglied: 24855
24855 07.03.2006 um 10:15:26 Uhr
Goto Top
Hallo Hummel85 ... genau das passiert ja, PSEXEC.exe connectet sich,
kopiert die Batch auf den Rechner der die Netzlaufwerke verbinden soll,
und startet die Batch auf diesem Lokal. Es geht trotzallem nicht,
ich hab auch schon eine Batch getstet, welche nur nach belegten Laufwerks-
buchstaben sucht. Geht wenn ich vor der Box sitze, geht nicht remote,
auch wenn dort lokalgestartet(per remote)...

Ich habe das Problem,das ich vorher nicht weis welche Netzlaufwerke, default, also vor
meinem Connect belegt sind, die selbst erstellten lösche ich ja sofort nachdem ich mein logfile
habe, sonst könnten die Leute von den Zielrechnern ja auf meinem Server rumkramenface-wink
Mitglied: Hummel85
Hummel85 07.03.2006 um 10:28:42 Uhr
Goto Top
Hi WI#Janosch.

Nach meinem Feierabend habe ich das ganze Szenario mal durchgespielt.

Habe ein 2. Rechner genommen( bei beiden Windows XP Professionell drauf).

Habe dann via VNC ( also remote) gestartet.
Die Batch auf den 2. Rechner kopiert.
Batch gestartet.

Alles hat einwandfrei geklappt.

Darum verstehe ich ja auch nicht warum es bei dir nicht geht.

Wenn du willst kann ich dir heute Abend mal die Batch die ich geschrieben komplett schicken. Bin nur gerade auf arbeit und habe mein Rechner aus also komme nicht an meine Daten auf meiner Festplatte ran. Vielleicht kann ja bis dahin jemand anderes dein Problem lösen.
Mitglied: 24855
24855 07.03.2006 um 10:33:57 Uhr
Goto Top
ist ja echt nett von euch das ihr soviel Aufwand betreibt, nur leider bringt mich auch das nicht weiter,
weil meine Batch Real und TightVnc entfernt, damit ich einheitlich auf Ultra VNC umstellen kann, dass das funktioniert was du da gemacht hast, ist ziemlich klar. Da du mit nem VNC die aktive Sitzung des lokalen User direkt übernimmst (consolen modus), So ist es denn also als würde der lokale User die Batch starten. .. bin wohl echt im Ars*** mit meinem exotischen Sonderproblemchen face-smile
Mitglied: Hummel85
Hummel85 07.03.2006 um 10:43:58 Uhr
Goto Top
Ja das mit dem Testen gestern Abend war kein Aufwand. Hat 10 min gedauert da ich ja sowieso VNC schon am laufen habe.

Ist das nicht egal wie du die Batch Startest?

Hauptsache die Batch wir auf dem zu steuernden Rechner ausgeführt. Oder sehe ich das jetzt falsch? Hab leider nicht die absolute Ahnung von Remote.
Mitglied: 24855
24855 07.03.2006 um 10:55:14 Uhr
Goto Top
ich versteh es ja auch nicht so ganz, es scheint als würde der Dienst den Psexec.exe startet, ist nur consolen basiert, im Hintergrund laufen, parallel zum User der da akkert. Auf jeden Fall läuft die Batch welche lokal zuverlässig ihren Dienst verrichtet nicht wen ich sie kommandozeilenbasiert remote starte face-smile
Mitglied: Hummel85
Hummel85 07.03.2006 um 12:46:37 Uhr
Goto Top
Na ja tut mir leid das ich da nicht weiter Helfen konnte.

Soll ich dir trotzdem die batch geben die ich geschrieben habe?
Mitglied: 24855
24855 07.03.2006 um 16:14:51 Uhr
Goto Top
das ist n nettes Angebot.. aber danke wird mich nicht weiter bringen, muss mir n anderen Ansatz überlegen und daran basteln bis es klappt, zur not muss ich das Loggib file mailen oder so... bastel der weil noch an anderen Sachen und denk bis morgen nicht mehr dran.. vielelicht reicht der Abstand für neue Ideen face-smile trotzallem thx 2 4LL