VisualBasic vbs/bat script erklären

derGrimm

Banned
Registriert
Jan. 2011
Beiträge
3.842
Ich habe ein Script gefunden, welches scheinbar genau das macht was ich suche (Freien Laufwerksbuchstaben ermitteln), aber ich möchte keinen Quellcode einsetzen, den ich nicht selbst verstehe, habe aber gerade von vbs keine Ahnung.

Mein Verständnisproblem liegt in dem Teil:
Code:
:sL=sL^&D.DriveLetter:Next

Kann mir das jemand erklären?

Code:
@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
#Rem del "%GFDL%" 
if not defined LW echo Kein freier Laufwerksbuchstabe gefunden! & pause & goto :eof 
net use %LW%: \\europa\daten /persistent:no
Explorer "%LW%:\"

Quelle: http://www.administrator.de/forum/freien-laufwerksbuchstabe-ermittlen-und-vergeben-73254.html#
 
Dieses Batch Skript konstruiert in deinem Temp-Verzeichnis das folgende VisualBasic Skript und führt es dann aus:

Code:
For Each D In CreateObject("Scripting.FileSystemObject").Drives:sL=sL&D.DriveLetter:Next 
For i=68 To 90:If InStr(UCase(sL),Chr(i))=0 Then WScript.Echo Chr(i):WScript.Quit 
Next

Der VBS Code konkateniert (& Operator) zunächst in der ersten For-Schleife sämtliche verwendeten Laufwerksbuchstaben in der String-Variablen sL zusammen (: ist in VBS ein Befehlstrenner, wenn mehrere Befehle in einer Zeile stehen). Anschließend iteriert er in der zweiten For Schleife durch die ASCII Zeichen 68 bis 90 (D bis Z) und beendet das Programm sobald das Zeichen nicht im String aus der ersten Schleife gefunden wurde.

Das Skript ist harmlos.
 
Vielen Dank =)
 
Zurück
Oben