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

Freien Laufwerksbuchstabe ermittlen und vergeben

Frage Entwicklung Batch & Shell

Mitglied: werner500

werner500 (Level 1) - Jetzt verbinden

11.11.2007, aktualisiert 13.11.2007, 13122 Aufrufe, 26 Kommentare

Schönen guten Mittag =)
ich habe ein Problem, bzw. eine Frage:

Ich möchte eine batch Datei erstellen, die mir einen FREIEN Laufwerksbuchstaben ermittelt!
Es sollten aber auch wirklich alle vorhandenen Buchstaben ersteinmal kontrolliert werden - Auch die vom CD-ROM Laufwerk, Card Reader usw.

Brauchen tue ich das für folgendes.
Ich möchte auf Knopfdruck der Bat Datei eine Verbindung zu meinen Home-Server herstellen.
Da die Batch dann aber nicht nur auf meinen Rechner läuft, muss ich natürlich ersteinmal schauen welche Laufwerksbuchstaben noch frei sind...

net use L: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul
Explorer "L:\"

Der Laufwerksbuchstabe L (nur ein Beispiel) soll automatisch generiert werden, oder eben in einen anderen FREIEN Laufwerksbuchstabe!

Ähnliche Themen habe ich schon via Google gefunden - Allerdings für mich seeehr spanisch
Man beachte, das ich mich erst seit gestern Abend mit Batch Dateien beschäftige, sprich bitte nicht nur einfach einen Link posten ;)

Wäre cool, wenn mir einer helfen könnte,
Matthias
Mitglied: miniversum
11.11.2007 um 12:42 Uhr
for %%L in (d e f g h i j k l m n o p q r s t u v w x y z) do if not exist %%L:\NUL set LW=%%L
net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul
Explorer "%LW%:\"
Es werden alle Laufwerksbuchstaben von d bis z duchsuht ob sie "erreicht werden können". wenn einer nicht erreichbar ist, wird der Variabeln %LW% dieser Laufwerksbuchstabe zugewiesen.

miniversum
Bitte warten ..
Mitglied: werner500
11.11.2007 um 13:18 Uhr
Das sieht doch schon ganz vernüftig aus =)
Allerdings läufts bei mir nicht so ganz!

Ich habe ein Bild vom Fehler gemacht:
e26ed58339f7265252e8ac752763628b-error - Klicke auf das Bild, um es zu vergrößern

Wenn ich zweimal auf Abbrechen klicke, funktioniert es ...
Wie behebe ich das?

Weiter Frage:
Bei meinen Rechner verbindet er immer mit Y, wobei M, N usw. auch frei wäre.
Wird die Klammer von hinten nach Vorne ausgewertet?

PS.:
Code sieht momentan so aus:
01.
@echo off 
02.
echo ################################################## 
03.
echo #                                                # 
04.
echo #   Eine Verbindung zum Server wird aufgebaut!   # 
05.
echo #                                                # 
06.
echo ################################################## 
07.
 
08.
for %%L in (D E F G H I J K L M N O P Q R s T U V W X Y Z) do if not exist %%L:\NUL set LW=%%L 
09.
net use %LW%: \\Ser\Allerlei /user:geheim secret /persistent:no >nul 
10.
Explorer "%LW%:\"
[Edit: Dani - 11.11.2007 17:05]
Ich habe das Bild hochgeladen, so dass es auch in Zukunft auch verfügbar bleibt.
Bitte warten ..
Mitglied: bastla
11.11.2007 um 13:44 Uhr
Hallo werner500!

Etwas sicherer (etwa im Hinblick auf Card-Reader) und ohne die von Dir beschriebene Fehlermeldung zu verursachen könntest Du es so versuchen:
01.
@echo off & setlocal 
02.
set "GFDL=%temp%\GetFreeDriveLetter.vbs" 
03.
echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL^&D.DriveLetter:Next>"%GFDL%" 
04.
echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit>>"%GFDL%" 
05.
echo Next>>"%GFDL%" 
06.
set LW= 
07.
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i 
08.
del "%GFDL%" 
09.
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof 
10.
net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul 
11.
Explorer "%LW%:\"
Hier wird (temporäres) VBScript zum Auslesen der Laufwerke verwendet und (beginnend mit D = ASCII 68) ein freier Buchstabe gesucht.

Grüße
bastla

P.S.: Vielleicht möchtest Du die Daten für User und Passwort in Deinem obigen Posting wieder etwas anonymer gestalten ...

[Edit] Überzähligen ":" entfernt [/Edit]
Bitte warten ..
Mitglied: werner500
11.11.2007 um 14:02 Uhr
P.S.: Vielleicht möchtest Du die Daten für User und Passwort in Deinem obigen Posting
wieder etwas anonymer gestalten ...

Na schwein gehabt, das dies nur ein Testaccount war, wa?^^

Nun zum Script.
Brutal =)
Funktionieren tut er bei mir leider nicht wirklich - vielleicht bin ich auch einfach nur zu blöd ihn richtig zu bedienen / anzuwenden
Die Dateiendung bleibt weiterhin .bat ??

Ich habe wieder ein Screenshot gemacht - vielleicht hilft es euch weiter ;)
Error

Geändert habe ich an deinem Script nur den Benutzername und das Passwort - habe ich etwas vergessen?
Bitte warten ..
Mitglied: bastla
11.11.2007 um 14:24 Uhr
Hallo werner500!

Das war leider hinsichtlich des ":" doppelt gemoppelt - wenn Du ihn in dieser Zeile
01.
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i:
am Ende weg lässt (mach ich auch gleich oben), sollte das Ganze klappen.

Grüße
bastla

P.S.: War natürlich mein Fehler, da nur bis zur Ermittlung des Buchstabens getestet ...
Bitte warten ..
Mitglied: werner500
11.11.2007 um 14:45 Uhr
Rattenscharf!
Funktioniert 1a ;)
Vielen Dank !!

So nun möchte ich den Script noch ein wenig ausbauen..

Wenn der Server offline ist, so bringe mir die Meldung "server offline blabla", zudem beenden des Programms.
So, dass keine Fehler mittels Microsoft kommen, wie z.B. die Meldung die dann nach 2Minuten hängen des PC`s kommt: Ein Fehler ist aufgetreten usw.

Zuvor hatte ich das einfach so gelöst:

01.
ping -n 1 -i 135 -w 130 Ser 
02.
 
03.
if errorlevel 1 goto seoff 
04.
 
05.
:seoff 
06.
echo Der Server ist offline! 
07.
echo Versuche es spaeter nocheinmal! 
08.
Pause
Dies bekomme ich aber in deinem VBS Script nicht mehr realisiert =(

Weiter Frage:
Wie geht das, dass das Fenster z.B. 5 Sekunden aufbleibt und dann wieder schließt - so dass man den Text wie z.B. "Erfolgreich verbunden" noch lesen kann?
Bisher habe ich das meist mit PAUSE gemacht - ist aber meiner Meinung nach sehr unprofessional!

In C gibt es Sleep() - Ähnliche Funktion in batch dateien auch vorhanden??
Bitte warten ..
Mitglied: bastla
11.11.2007 um 15:13 Uhr
Hallo werner500!

Das VBScript ermittelt nur den Laufwerksbuchstaben, der Rest ist weiterhin Batch - insofern kannst Du also Deinen Server-Check per "ping" weiterhin verwenden (einfach vor der "net use"-Zeile einbauen).
Ein Popup lässt sich ebenfalls per VBS realisieren:
01.
@echo on & setlocal 
02.
set "Popup=%temp%\Popup.vbs" 
03.
echo R=WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0),WScript.Arguments(1),WScript.Arguments(2),vbInformation)>"%Popup%" 
04.
wscript //nologo "%Popup%" "Dieser Text verschwindet nach 5 Sekunden!" 5 "Nur ein Test ..." 
05.
del "%Popup%"
Zu übergeben sind Meldungstext, Dauer und Meldungstitel (in dieser Reihenfolge). Wenn Du im Code das ",vbInformation" weg lässt, wird kein Info-Symbol und kein Sound ausgegeben.
Es gibt eine "sleep.exe" in den "Windows Server 2003 Resource Kit Tools". Du kannst zum Pausieren aber auch einen "ping" verwenden:
01.
ping -n 5 127.0.0.1 >nul
Grüße
bastla
Bitte warten ..
Mitglied: werner500
11.11.2007 um 15:28 Uhr
Wow!
Geht ab wie Schnitzel =))
Danke nochmals für die Hilfe!

Allerdings gefällt mir ein letzter Punkt noch nicht :D
Ich kann die Datei anschauen und so unter anderen das Passwort einsehen.
Kann man das irgendwie verschlüsseln?
Bitte warten ..
Mitglied: TuXHunt3R
11.11.2007 um 15:57 Uhr
Verschlüsseln kannst du Batches nicht, allerdings gibt es Tools, die Batchdateien in EXE-Files umwandeln können. Such bei Google nach "batch to exe" oder "batch compiler".
Bitte warten ..
Mitglied: werner500
11.11.2007 um 16:15 Uhr
ohh maaan..
Da gibts paar nette Programme, aber alle bringen mir beim Starten der exe-Datei erst die Meldung: Kaufen Sie die Vollversion, dann steht dieser Text nicht mehr hier!
Gibts ein kostenloses Programm das diese Nachricht nicht anzeigt, sondern gleich mein Programm startet?
Bitte warten ..
Mitglied: TuXHunt3R
11.11.2007 um 16:19 Uhr
Ich hab bis jetzt keins gefunden. Bei mir bringt es auch immer diese beschissene Meldung. Irgendwo gibt es noch ein Tool, dass die Batches in COM-Files umwandelt. Dieses ist zwar gratis, aber es stammt aus DOS-Zeiten und kann komplexe Batchfiles wie deins nicht mehr richtig kompilieren.

Ich habe mir dann schweren Herzens die Vollversion eines solchen Tools zugelegt.


PS: VBScripts lassen sich verschlüsseln und in sogenannte VBE-Dateien verwandeln. (VBE=Visual Basic Encrypted). Ich habs noch nie gebraucht, ein Arbeitskollege hat es mal verwendet. Ich weiss nicht mehr, ob sich das per Visual Basic Editor bewerkstelligen lässt oder ob du noch ein weiteres Tool brauchst
Bitte warten ..
Mitglied: bastla
11.11.2007 um 16:20 Uhr
Hallo werner500!

Ich kann die Datei anschauen und so unter anderen das Passwort einsehen.
Das lässt sich vermeiden, wenn Du dasPasswort jeweils eingibst. Bei Verwendung auf einem XP-System kannst Du die Eingabe auch "unsichtbar" durchführen, wie im folgenden Beispiel (geklaut hier) gezeigt:
01.
@echo off & setlocal 
02.
set "PwIn=%temp%\PasswordInput.vbs" 
03.
echo WScript.Echo CreateObject("ScriptPW.Password").GetPassword()>"%PwIn%" 
04.
echo Bitte das Passwort eingeben: 
05.
for /f "delims=" %%i in ('cscript //nologo "%PwIn%"') do set "PW=%%i" 
06.
del "%PwIn%" 
07.
echo Eingegebenes Passwort: %PW%
Ansonsten geht auch einfach
01.
set /p "PW=Bitte Passwort eingeben: " 
02.
echo Eingegebenes Passwort: %PW%
Grüße
bastla
Bitte warten ..
Mitglied: bastla
11.11.2007 um 16:32 Uhr
@TuXHunt3R

VBScripts lassen sich verschlüsseln und in sogenannte VBE-Dateien verwandeln.
... und auch ganz einfach wieder entschlüsseln, da nicht passwort-geschützt. Aus der Hand geben würde ich daher so ein Script nicht.

Anyway: Zu finden ist der "Script Encoder" hier.

Grüße
bastla
Bitte warten ..
Mitglied: werner500
11.11.2007 um 17:23 Uhr
Guten Abend liebe Community
Die ganzen Lösungen gefallen mir alle prächtig - muss mal eine Nacht drüber schlafen, für was ich mich nun entscheide!

Ich habe gemerkt, das ich noch einen kleinen Bug im Programm habe.
Beispielsverlauf:

1.) User klickt auf server.bat
2.) Laufwerkname L wird bestimmt
3.) User wird auf dem Server angemeldet
4.) Explorer mit dem Laufwerk L wird geöffnet
5.) DOS-Fenster schließt

Alles wunderbar!!

So, nun klickt der User aber noch ein zweites mal auf die server.bat
Dann geht das selbe nocheinmal von Vorne los.
Dies möchte ich allerdings nicht!
Ich möchte, dass wenn der User ein zweites mal auf die server.bat klickt, dass die Verbindung via net use L: /d getrennt wird.
Wie realisiere ich das??

Momentaner Code:
01.
@echo off & setlocal 
02.
 
03.
echo ################################################## 
04.
echo #                                                # 
05.
echo #   Eine Verbindung zum Server wird aufgebaut!   # 
06.
echo #                                                # 
07.
echo ################################################## 
08.
echo. 
09.
 
10.
set "GFDL=%temp%\GetFreeDriveLetter.vbs" 
11.
echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL^&D.DriveLetter:Next>"%GFDL%" 
12.
echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit>>"%GFDL%" 
13.
echo Next>>"%GFDL%" 
14.
set LW= 
15.
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i 
16.
del "%GFDL%" 
17.
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof 
18.
ping -n 1 -i 135 -w 130 Ser 
19.
if errorlevel 1 goto seoff 
20.
 
21.
net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul 
22.
 
23.
echo. 
24.
echo. 
25.
echo ################################################## 
26.
echo #                                                # 
27.
echo #               Bitte warten ...                 # 
28.
echo #                                                # 
29.
echo ################################################## 
30.
 
31.
Explorer "%LW%:\" 
32.
ping localhost -n 8 >NUL 
33.
Exit 
34.
 
35.
:seoff 
36.
echo. 
37.
echo. 
38.
echo. 
39.
echo ################################################## 
40.
echo #                                                # 
41.
echo #             Der Server ist offline!            # 
42.
echo #         Versuche es spaeter nocheinmal!        # 
43.
echo #                                                # 
44.
echo ################################################## 
45.
 
46.
@echo off & setlocal 
47.
set "Popup=%temp%\Popup.vbs" 
48.
echo R=WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0),WScript.Arguments(1),WScript.Arguments(2),vbInformation)>"%Popup%" 
49.
wscript //nologo "%Popup%" "Der Server ist offline! Versuche es spaeter nocheinmal!" 8 "Server offline" 
50.
del "%Popup%"
Einen schönen Abend noch,
Matthias
Bitte warten ..
Mitglied: bastla
11.11.2007 um 17:34 Uhr
Hallo werner500!

Du könntest nach dem Ermitteln des Laufwerksbuchstabens diesen in eine Temp-Datei schreiben und am Beginn der Batchdatei das Vorhandensein dieser Datei überprüfen - wenn vorhanden, Buchstaben auslesen, damit Netzlaufwerk trennen und Temp-Datei löschen; wenn nicht vorhanden, weiter wie bisher.

Risiko dabei: Wenn bei der letzten Verbindung keine Trennung erfolgte, steht der "alte" Laufwerksbuchstabe weiterhin in der Temp-Datei; sollte inzwischen ein anderes Laufwerk diesen Buchstaben erhalten haben, würde beim nächsten Aufruf der Batchdatei versucht, dieses Laufwerk zu trennen ...

Grüße
bastla
Bitte warten ..
Mitglied: werner500
11.11.2007 um 17:51 Uhr
Gute Übelegung!
Man könnte die bat in den geplanten Task einfügen, so dass (wenn der PC startet und sich wieder abmeldet) die Datei aufgerufen wird.
Wenn der PC abstürzt, bleibt die Temp-Datein aber trotzdem vorhanden.
Alles nicht so leicht, wa?


Was ich mir noch überlebt habe ist folgendes:
Ich schmeiß eine beliebige Datei auf den Server (z.B. ahenci2.txt), diese Datei steckt nun im Ordner WasWeisIch. Dieser Ordner ist in KEINEM Unterverzeichnis.

Nun sage ich dem Programm, dass er alles auf diese Datei durchsuchen soll, irgendwie so:
01.
if exist *:\WasWeisIch\ahenci2.txt goto disconnect 
02.
 
03.
:disconnect 
04.
net use *: /d 
05.
Exit
Da man davon ausgehen kann, das kein menschliches Wesen eine Datei ahenci2.txt in den Ordner WasWeisIch auf seiner Festplatte reinkopiert, müsste dies doch auch relativ zuverlässig funktionieren - oder?


Was mache ich nun am geschickesten??
Bitte warten ..
Mitglied: bastla
11.11.2007 um 18:07 Uhr
Hallo werner500!

Was mache ich nun am geschickesten??
Da "if exist *:\WasWeisIch\ahenci2.txt goto disconnect" nicht funktioniert, vielleicht noch etwas ganz Anderes:
01.
@echo off & setlocal 
02.
set L= 
03.
for /f "tokens=2" %%i in ('net use^|findstr "\\Ser\Allerlei"') do set "L=%%i" 
04.
if not defined L goto :Verbinden 
05.
if "%L:~-1" neq ":" goto :Verbinden 
06.
echo Laufwerk verbunden mit Buchstabe %L% - wird getrennt ... 
07.
net use %L% /d 
08.
goto :eof 
09.
 
10.
:Verbinden 
11.
... 
12.
...
Der "net use"-Befehl zeigt alle gespeicherten Netzwerkverbindungen, auch wenn aktuell kein Laufwerksbuchstabe zugeordnet ist - daher zusätzlich die Überprüfung, ob das letzte Zeichen (%L:~-1%) des gelesenen Eintrages ein ":" ist.

Grüße
bastla

P.S.: "@echo off & setlocal" brauchts Du nur einmal (ganz am Anfang)
Bitte warten ..
Mitglied: werner500
11.11.2007 um 18:13 Uhr
Sorry, aber das wird mir jetzt ein wenig zu hoch
Kannst du mir deinen Codeschnipsel in meinen oben geposteten Code einfügen - So das es funktioniert?
Ich versuch nun schon eine Weile rum und trotzdem wirds nicht's.
Wenn man keine Ahnung von Batchdateien hat (wie Ich), ist das wie in Rate mal im Rosental.

Wäre geil, wenn du das für mich kombinieren könntest =)

MfG,
Matthias
Bitte warten ..
Mitglied: bastla
11.11.2007 um 18:28 Uhr
Hallo werner500!

Etwa so:
01.
@echo off & setlocal 
02.
 
03.
set L= 
04.
for /f "tokens=2" %%i in ('net use^|findstr "\\Ser\Allerlei"') do set "L=%%i" 
05.
if not defined L goto :Verbinden 
06.
if "%L:~-1%" neq ":" goto :Verbinden 
07.
 
08.
echo ################################################ 
09.
echo #                                              # 
10.
echo #   Verbindung für Laufwerk %L% wird getrennt   # 
11.
echo #                                              # 
12.
echo ################################################ 
13.
echo. 
14.
echo. 
15.
 
16.
net use %L% /d 
17.
ping localhost -n 8 >NUL 
18.
goto :eof 
19.
 
20.
:Verbinden 
21.
echo ################################################## 
22.
echo #                                                # 
23.
echo #   Eine Verbindung zum Server wird aufgebaut!   # 
24.
echo #                                                # 
25.
echo ################################################## 
26.
echo. 
27.
 
28.
set "GFDL=%temp%\GetFreeDriveLetter.vbs" 
29.
echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL^&D.DriveLetter:Next>"%GFDL%" 
30.
echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit>>"%GFDL%" 
31.
echo Next>>"%GFDL%" 
32.
set LW= 
33.
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i 
34.
del "%GFDL%" 
35.
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof 
36.
 
37.
ping -n 1 -i 135 -w 130 Ser 
38.
if errorlevel 1 goto seoff 
39.
 
40.
net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul 
41.
 
42.
echo. 
43.
echo. 
44.
echo ################################################## 
45.
echo #                                                # 
46.
echo #               Bitte warten ...                 # 
47.
echo #                                                # 
48.
echo ################################################## 
49.
 
50.
Explorer "%LW%:\" 
51.
ping localhost -n 8 >NUL 
52.
Exit 
53.
 
54.
:seoff 
55.
echo. 
56.
echo. 
57.
echo. 
58.
echo ################################################## 
59.
echo #                                                # 
60.
echo #             Der Server ist offline!            # 
61.
echo #         Versuche es spaeter nocheinmal!        # 
62.
echo #                                                # 
63.
echo ################################################## 
64.
 
65.
set "Popup=%temp%\Popup.vbs" 
66.
echo R=WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0),WScript.Arguments(1),WScript.Arguments(2),vbInformation)>"%Popup%" 
67.
wscript //nologo "%Popup%" "Der Server ist offline! Versuche es spaeter nocheinmal!" 8 "Server offline" 
68.
del "%Popup%"
Wenn Du für die Ausgabe des "Trenn-Hinweises" zusätzlich / alternativ das Popup verwenden willst, einfach den ganzen Block oben nochmals einsetzen und die Texte anpassen.

Grüße
bastla

[Edit] Fehlendes % in "if "%L:~-1%" neq ":" goto :Verbinden" nachgetragen. [/Edit]
Bitte warten ..
Mitglied: werner500
11.11.2007 um 19:06 Uhr
Keine Veränderung!
Er öffnet mir ein Laufwerk nach dem anderen, allerdings wird keins getrennt.
Irgendwo muss noch ein Fehler liegen - Frag mich aber nicht wo genau

Vermutlich bei:
01.
set L= 
02.
for /f "tokens=2" %%i in ('net use^|findstr "\\Ser\Allerlei"') do set "L=%%i" 
03.
if not defined L goto :Verbinden 
04.
if "%L:~-1" neq ":" goto :Verbinden
Zum besseren Verständniss habe ich wiedereinmal ein Screenshot gemacht.
Auf dem Bild wird das Laufwerk J verbunden, dahvor wurde mir G => H => I => J verbunden.
Fehleranalyse

Servus,
Matthias
Bitte warten ..
Mitglied: bastla
11.11.2007 um 19:42 Uhr
Hallo werner500!

Versuch vorweg bitte noch folgende geänderte Zeile:
01.
for /f "tokens=2" %%i in ('net use^|findstr /i "\\Ser\Allerlei"') do set "L=%%i"
Damit wird bei der Suche nach der Freigabe "\\Ser\Allerlei" Klein- und Großschreibung nicht unterschieden.

Falls das nicht genügt, ändere bitte das "echo off" in der ersten Zeile auf "echo on" und starte von der Kommandozeile ("Start / Ausführen... / cmd") mit
01.
C:\Pfad\DeineBatchdatei.bat > C:\Log.txt
In der Log.txt siehst Du dann die einzelnen Befehle vor der Ausführung angezeigt und kannst damit den Ablauf nachvollziehen.

Wenn Du gerade in der Kommandozeile bist, kannst Du auch noch mit
01.
net use > C:\Net.txt
eine Liste der Laufwerksmappings erstellen.

Poste bitte beide Textdateien in < code>-Tags.

Grüße
bastla
Bitte warten ..
Mitglied: werner500
11.11.2007 um 20:16 Uhr
Hi Bastla

Sorry, aber das kapier ich nicht!
Wenn ich via cmd auf C:\batch\server.bat gehe, wird mein Programm ausgeführt, nach 5 Sekunden ist das cmd Fenster auch schon wieder zu.

Eine Logdatei unter C:\Log.txt gibts bei mir auch nicht ?!

Was mache ich falsch??
Bitte warten ..
Mitglied: werner500
11.11.2007 um 20:25 Uhr
Mhh, man merkt das es spät wird =)
Habs nun rausbekommen.

Beide Dateien habe ich ins Netz gestellt:

Log: http://www.sek-tamm.de/rest/Log.txt
Net: http://www.sek-tamm.de/rest/Net.txt

Und hier nochmal zum direkten anschauen:
Log.txt:
01.
 
02.
C:\batch>set L=  
03.
 
04.
C:\batch>for /F "tokens=2" %i in ('net use|findstr /i "\\Ser\Allerlei"') do set "L=%i"  
05.
 
06.
C:\batch>set "L=G:"  
07.
 
08.
C:\batch>set "L=H:"  
09.
 
10.
C:\batch>set "L=I:"  
11.
 
12.
C:\batch>if not defined L goto :Verbinden  
13.
 
14.
C:\batch>if "L:~-1" NEQ ":" goto :Verbinden  
15.
 
16.
C:\batch>echo ##################################################  
17.
################################################## 
18.
 
19.
C:\batch>echo #                                                #  
20.
#                                                # 
21.
 
22.
C:\batch>echo #   Eine Verbindung zum Server wird aufgebaut!   #  
23.
#   Eine Verbindung zum Server wird aufgebaut!   # 
24.
 
25.
C:\batch>echo #                                                #  
26.
#                                                # 
27.
 
28.
C:\batch>echo ##################################################  
29.
################################################## 
30.
 
31.
C:\batch>echo. 
32.
 
33.
 
34.
C:\batch>set "GFDL=C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"  
35.
 
36.
C:\batch>echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL&D.DriveLetter:Next 1>"C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"  
37.
 
38.
C:\batch>echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit 1>>"C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"  
39.
 
40.
C:\batch>echo Next 1>>"C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"  
41.
 
42.
C:\batch>set LW=  
43.
 
44.
C:\batch>for /F %i in ('cscript //nologo "C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"') do set LW=%i  
45.
 
46.
C:\batch>set LW=J  
47.
 
48.
C:\batch>del "C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"  
49.
 
50.
C:\batch>if not defined LW echo Kein freier Laufwerksbuchstabe gefunden!   & pause   & goto :eof  
51.
 
52.
C:\batch>ping -n 1 -i 135 -w 130 Ser  
53.
 
54.
 
55.
Ping Ser [192.168.1.2] mit 32 Bytes Daten: 
56.
 
57.
 
58.
 
59.
Antwort von 192.168.1.2: Bytes=32 Zeit<1ms TTL=128 
60.
 
61.
 
62.
 
63.
Ping-Statistik fr 192.168.1.2: 
64.
 
65.
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust), 
66.
 
67.
Ca. Zeitangaben in Millisek.: 
68.
 
69.
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms 
70.
 
71.
 
72.
C:\batch>if errorlevel 1 goto seoff  
73.
 
74.
C:\batch>net use J: \\Ser\Allerlei /user:Geheim secret /persistent:no  1>nul  
75.
 
76.
C:\batch>echo. 
77.
 
78.
 
79.
C:\batch>echo. 
80.
 
81.
 
82.
C:\batch>echo ##################################################  
83.
################################################## 
84.
 
85.
C:\batch>echo #                                                #  
86.
#                                                # 
87.
 
88.
C:\batch>echo #               Bitte warten ...                 #  
89.
#               Bitte warten ...                 # 
90.
 
91.
C:\batch>echo #                                                #  
92.
#                                                # 
93.
 
94.
C:\batch>echo ##################################################  
95.
################################################## 
96.
 
97.
C:\batch>Explorer "J:\"  
98.
 
99.
C:\batch>ping localhost -n 8  1>NUL  
100.
 
101.
C:\batch>Exit
Net.txt:
01.
Neue Verbindungen werden nicht gespeichert. 
02.
 
03.
 
04.
Status       Lokal     Remote                    Netzwerk 
05.
 
06.
------------------------------------------------------------------------------- 
07.
OK           G:        \\Ser\Allerlei            Microsoft Windows-Netzwerk 
08.
OK           H:        \\Ser\Allerlei            Microsoft Windows-Netzwerk 
09.
OK           J:        \\Ser\Allerlei            Microsoft Windows-Netzwerk 
10.
Der Befehl wurde erfolgreich ausgefhrt.

Ich hoffe du kannst damit etwas anfangen =))
Bitte warten ..
Mitglied: bastla
11.11.2007 um 20:36 Uhr
Hallo werner500!

Ich hoffe du kannst damit etwas anfangen =))
Kann ich, und zwar mich ärgern (über mich ) ...

In der Zeile
01.
if "%L:~-1" neq ":" goto :Verbinden
fehlt ein %-Zeichen (zwischen 1 und ") - ich trage es oben auch noch nach.

Das CMD-Fenster ging übrigens so schnell zu, weil Du ein "exit" im Code hast - wenn Du dieses durch "goto :eof" ersetzt, bleibt das Fenster offen.

Grüße
bastla
Bitte warten ..
Mitglied: werner500
11.11.2007 um 20:51 Uhr
Solche Fehler liebe ich =)
Aber letztendlich hat es geklappt - nun bin ich absolut happy

Das Ganze wird nun noch ein bisschen umgeändert (Texte bzw. Fehlermeldungen angepassen, ...) und dann in eine .exe umgewandelt =)

Das wird prächtig ;)
Morgen probier ich das Programm mal an anderen Rechnern aus, falls Probleme auftreten sollten, so melde ich mich noch einmal.

Schlussendlich bedanke ich mich nochmals bei allen Helfern, vor allen bastla!!!

Schönen Sonntagabend noch,
Matthias
Bitte warten ..
Mitglied: Biber
13.11.2007 um 19:42 Uhr
Moin werner500,
Morgen probier ich das Programm mal an anderen Rechnern aus, falls Probleme auftreten sollten, so melde ich mich noch einmal.
Scheint geklappt zu haben...
Ich schließe den Beitrag mal.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
GPO werden nicht an Window 7 Clients vergeben (5)

Frage von Tealk144 zum Thema Windows Server ...

Hyper-V
gelöst Hyper-V CPU vergeben (9)

Frage von adrian138 zum Thema Hyper-V ...

Google Android
Laufwerksbuchstabe von Android ab 5.x unter Windows nicht mehr möglich ? (1)

Frage von PeterLustig2016 zum Thema Google Android ...

Debian
gelöst Windows-Freigabe unter Debian Rechte vergeben (6)

Frage von maddig zum Thema Debian ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...