werner500
Goto Top

Freien Laufwerksbuchstabe ermittlen und vergeben

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 face-sad
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

Content-Key: 73254

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

Printed on: April 25, 2024 at 01:04 o'clock

Member: miniversum
miniversum Nov 11, 2007 at 11:42:31 (UTC)
Goto Top
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
Member: werner500
werner500 Nov 11, 2007 at 12:18:43 (UTC)
Goto Top
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

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:
@echo off
echo ##################################################
echo #                                                #
echo #   Eine Verbindung zum Server wird aufgebaut!   #
echo #                                                #
echo ##################################################

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%:\"  
[Edit: Dani - 11.11.2007 17:05]
Ich habe das Bild hochgeladen, so dass es auch in Zukunft auch verfügbar bleibt.
Member: bastla
bastla Nov 11, 2007 at 12:44:30 (UTC)
Goto Top
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:
@echo off & setlocal
set "GFDL=%temp%\GetFreeDriveLetter.vbs"  
echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL^&D.DriveLetter:Next>"%GFDL%"  
echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit>>"%GFDL%"  
echo Next>>"%GFDL%"  
set LW=
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i  
del "%GFDL%"  
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof
net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul
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]
Member: werner500
werner500 Nov 11, 2007 at 13:02:29 (UTC)
Goto Top
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?
Member: bastla
bastla Nov 11, 2007 at 13:24:18 (UTC)
Goto Top
Hallo werner500!

Das war leider hinsichtlich des ":" doppelt gemoppelt - wenn Du ihn in dieser Zeile
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 ...
Member: werner500
werner500 Nov 11, 2007 at 13:45:27 (UTC)
Goto Top
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:

ping -n 1 -i 135 -w 130 Ser

if errorlevel 1 goto seoff

:seoff
echo Der Server ist offline!
echo Versuche es spaeter nocheinmal!
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??
Member: bastla
bastla Nov 11, 2007 at 14:13:21 (UTC)
Goto Top
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:
@echo on & setlocal
set "Popup=%temp%\Popup.vbs"  
echo R=WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0),WScript.Arguments(1),WScript.Arguments(2),vbInformation)>"%Popup%"  
wscript //nologo "%Popup%" "Dieser Text verschwindet nach 5 Sekunden!" 5 "Nur ein Test ..."  
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:
ping -n 5 127.0.0.1 >nul

Grüße
bastla
Member: werner500
werner500 Nov 11, 2007 at 14:28:28 (UTC)
Goto Top
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?
Member: TuXHunt3R
TuXHunt3R Nov 11, 2007 at 14:57:42 (UTC)
Goto Top
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".
Member: werner500
werner500 Nov 11, 2007 at 15:15:09 (UTC)
Goto Top
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?
Member: TuXHunt3R
TuXHunt3R Nov 11, 2007 at 15:19:57 (UTC)
Goto Top
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
Member: bastla
bastla Nov 11, 2007 at 15:20:24 (UTC)
Goto Top
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:
@echo off & setlocal
set "PwIn=%temp%\PasswordInput.vbs"  
echo WScript.Echo CreateObject("ScriptPW.Password").GetPassword()>"%PwIn%"  
echo Bitte das Passwort eingeben:
for /f "delims=" %%i in ('cscript //nologo "%PwIn%"') do set "PW=%%i"  
del "%PwIn%"  
echo Eingegebenes Passwort: %PW%

Ansonsten geht auch einfach
set /p "PW=Bitte Passwort eingeben: "  
echo Eingegebenes Passwort: %PW%

Grüße
bastla
Member: bastla
bastla Nov 11, 2007 at 15:32:37 (UTC)
Goto Top
@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
Member: werner500
werner500 Nov 11, 2007 at 16:23:13 (UTC)
Goto Top
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:
@echo off & setlocal

echo ##################################################
echo #                                                #
echo #   Eine Verbindung zum Server wird aufgebaut!   #
echo #                                                #
echo ##################################################
echo.

set "GFDL=%temp%\GetFreeDriveLetter.vbs"  
echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL^&D.DriveLetter:Next>"%GFDL%"  
echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit>>"%GFDL%"  
echo Next>>"%GFDL%"  
set LW=
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i  
del "%GFDL%"  
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof
ping -n 1 -i 135 -w 130 Ser
if errorlevel 1 goto seoff

net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul

echo.
echo.
echo ##################################################
echo #                                                #
echo #               Bitte warten ...                 #
echo #                                                #
echo ##################################################

Explorer "%LW%:\"  
ping localhost -n 8 >NUL
Exit

:seoff
echo.
echo.
echo.
echo ##################################################
echo #                                                #
echo #             Der Server ist offline!            #
echo #         Versuche es spaeter nocheinmal!        #
echo #                                                #
echo ##################################################

@echo off & setlocal
set "Popup=%temp%\Popup.vbs"  
echo R=WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0),WScript.Arguments(1),WScript.Arguments(2),vbInformation)>"%Popup%"  
wscript //nologo "%Popup%" "Der Server ist offline! Versuche es spaeter nocheinmal!" 8 "Server offline"  
del "%Popup%"  

Einen schönen Abend noch,
Matthias
Member: bastla
bastla Nov 11, 2007 at 16:34:12 (UTC)
Goto Top
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
Member: werner500
werner500 Nov 11, 2007 at 16:51:11 (UTC)
Goto Top
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:
if exist *:\WasWeisIch\ahenci2.txt goto disconnect

:disconnect
net use *: /d
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??
Member: bastla
bastla Nov 11, 2007 at 17:07:15 (UTC)
Goto Top
Hallo werner500!

Was mache ich nun am geschickesten??
Da "if exist *:\WasWeisIch\ahenci2.txt goto disconnect" nicht funktioniert, vielleicht noch etwas ganz Anderes:
@echo off & setlocal
set L=
for /f "tokens=2" %%i in ('net use^|findstr "\\Ser\Allerlei"') do set "L=%%i"  
if not defined L goto :Verbinden
if "%L:~-1" neq ":" goto :Verbinden  
echo Laufwerk verbunden mit Buchstabe %L% - wird getrennt ...
net use %L% /d
goto :eof

:Verbinden
...
...
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)
Member: werner500
werner500 Nov 11, 2007 at 17:13:32 (UTC)
Goto Top
Sorry, aber das wird mir jetzt ein wenig zu hoch face-sad
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
Member: bastla
bastla Nov 11, 2007 at 17:28:17 (UTC)
Goto Top
Hallo werner500!

Etwa so:
@echo off & setlocal

set L=
for /f "tokens=2" %%i in ('net use^|findstr "\\Ser\Allerlei"') do set "L=%%i"  
if not defined L goto :Verbinden
if "%L:~-1%" neq ":" goto :Verbinden  

echo ################################################
echo #                                              #
echo #   Verbindung für Laufwerk %L% wird getrennt   #
echo #                                              #
echo ################################################
echo.
echo.

net use %L% /d
ping localhost -n 8 >NUL
goto :eof

:Verbinden
echo ##################################################
echo #                                                #
echo #   Eine Verbindung zum Server wird aufgebaut!   #
echo #                                                #
echo ##################################################
echo.

set "GFDL=%temp%\GetFreeDriveLetter.vbs"  
echo For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL^&D.DriveLetter:Next>"%GFDL%"  
echo For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit>>"%GFDL%"  
echo Next>>"%GFDL%"  
set LW=
for /f %%i in ('cscript //nologo "%GFDL%"') do set LW=%%i  
del "%GFDL%"  
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof

ping -n 1 -i 135 -w 130 Ser
if errorlevel 1 goto seoff

net use %LW%: \\Ser\Allerlei /user:Geheim secret /persistent:no >nul

echo.
echo.
echo ##################################################
echo #                                                #
echo #               Bitte warten ...                 #
echo #                                                #
echo ##################################################

Explorer "%LW%:\"  
ping localhost -n 8 >NUL
Exit

:seoff
echo.
echo.
echo.
echo ##################################################
echo #                                                #
echo #             Der Server ist offline!            #
echo #         Versuche es spaeter nocheinmal!        #
echo #                                                #
echo ##################################################

set "Popup=%temp%\Popup.vbs"  
echo R=WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0),WScript.Arguments(1),WScript.Arguments(2),vbInformation)>"%Popup%"  
wscript //nologo "%Popup%" "Der Server ist offline! Versuche es spaeter nocheinmal!" 8 "Server offline"  
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]
Member: werner500
werner500 Nov 11, 2007 at 18:06:14 (UTC)
Goto Top
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 face-sad

Vermutlich bei:
set L=
for /f "tokens=2" %%i in ('net use^|findstr "\\Ser\Allerlei"') do set "L=%%i"  
if not defined L goto :Verbinden
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
Member: bastla
bastla Nov 11, 2007 at 18:42:14 (UTC)
Goto Top
Hallo werner500!

Versuch vorweg bitte noch folgende geänderte Zeile:
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
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
net use > C:\Net.txt
eine Liste der Laufwerksmappings erstellen.

Poste bitte beide Textdateien in < code>-Tags.

Grüße
bastla
Member: werner500
werner500 Nov 11, 2007 at 19:16:10 (UTC)
Goto Top
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??
Member: werner500
werner500 Nov 11, 2007 at 19:25:45 (UTC)
Goto Top
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:
C:\batch>set L= 

C:\batch>for /F "tokens=2" %i in ('net use|findstr /i "\\Ser\Allerlei"') do set "L=%i"   

C:\batch>set "L=G:"   

C:\batch>set "L=H:"   

C:\batch>set "L=I:"   

C:\batch>if not defined L goto :Verbinden 

C:\batch>if "L:~-1" NEQ ":" goto :Verbinden   

C:\batch>echo ################################################## 
##################################################

C:\batch>echo #                                                # 
#                                                #

C:\batch>echo #   Eine Verbindung zum Server wird aufgebaut!   # 
#   Eine Verbindung zum Server wird aufgebaut!   #

C:\batch>echo #                                                # 
#                                                #

C:\batch>echo ################################################## 
##################################################

C:\batch>echo.


C:\batch>set "GFDL=C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"   

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"   

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"   

C:\batch>echo Next 1>>"C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"   

C:\batch>set LW= 

C:\batch>for /F %i in ('cscript //nologo "C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"') do set LW=%i   

C:\batch>set LW=J 

C:\batch>del "C:\DOKUME~1\MATTHI~1\LOKALE~1\Temp\GetFreeDriveLetter.vbs"   

C:\batch>if not defined LW echo Kein freier Laufwerksbuchstabe gefunden!   & pause   & goto :eof 

C:\batch>ping -n 1 -i 135 -w 130 Ser 


Ping Ser [192.168.1.2] mit 32 Bytes Daten:



Antwort von 192.168.1.2: Bytes=32 Zeit<1ms TTL=128



Ping-Statistik fr 192.168.1.2:

    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust),

Ca. Zeitangaben in Millisek.:

    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms


C:\batch>if errorlevel 1 goto seoff 

C:\batch>net use J: \\Ser\Allerlei /user:Geheim secret /persistent:no  1>nul 

C:\batch>echo.


C:\batch>echo.


C:\batch>echo ################################################## 
##################################################

C:\batch>echo #                                                # 
#                                                #

C:\batch>echo #               Bitte warten ...                 # 
#               Bitte warten ...                 #

C:\batch>echo #                                                # 
#                                                #

C:\batch>echo ################################################## 
##################################################

C:\batch>Explorer "J:\"   

C:\batch>ping localhost -n 8  1>NUL 

C:\batch>Exit

Net.txt:
Neue Verbindungen werden nicht gespeichert.


Status       Lokal     Remote                    Netzwerk

-------------------------------------------------------------------------------
OK           G:        \\Ser\Allerlei            Microsoft Windows-Netzwerk
OK           H:        \\Ser\Allerlei            Microsoft Windows-Netzwerk
OK           J:        \\Ser\Allerlei            Microsoft Windows-Netzwerk
Der Befehl wurde erfolgreich ausgefhrt.


Ich hoffe du kannst damit etwas anfangen =))
Member: bastla
bastla Nov 11, 2007 at 19:36:04 (UTC)
Goto Top
Hallo werner500!

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

In der Zeile
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
Member: werner500
werner500 Nov 11, 2007 at 19:51:40 (UTC)
Goto Top
Solche Fehler liebe ich =)
Aber letztendlich hat es geklappt - nun bin ich absolut happy face-smile

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
Member: Biber
Biber Nov 13, 2007 at 18:42:10 (UTC)
Goto Top
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