99046
14.09.2011, aktualisiert am 18.10.2012
4198
25
1
USB-Laufwerk unter WIN VISTA finden mittels verschachtelter FOR-Schleife
Hallo zusammen,
ich habe ein Backup-Script, das unter XP prima läuft.
Ich brauche es jetzt für Windows-VISTA, hier der Teil, der das USB-Laufwerk finden soll:
Ich komme nicht weiter, erhalte keine Ausgabe -
hat jemand einen Tip ?
Vielen Dank !
Rob
ich habe ein Backup-Script, das unter XP prima läuft.
Ich brauche es jetzt für Windows-VISTA, hier der Teil, der das USB-Laufwerk finden soll:
@echo off & setlocal enabledelayedexpansion
Set SuchLW= & Set LW= & Set Chckloibl= & Set Liste= & set VLaibl=
Set Chckloibl=USB
for /F "skip=1" %%a in ('fsutil fsinfo drives ^| find ":\"') do set "Liste=!Liste! %%a"
Set Liste=%liste:\=%
for %%a in (%liste%) do for /f "tokens=6" %%l in ('vol %%a') DO set "VLaibl=%%l" & if "!VLaibl:~0,3!"=="%Chckloibl%" set LW=%%a\ 2>nul
Set LW=%LW:~0,-1%
echo. && @echo Backuplaufwerk %LW% && echo. && pause
Ich komme nicht weiter, erhalte keine Ausgabe -
hat jemand einen Tip ?
Vielen Dank !
Rob
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 173096
Url: https://administrator.de/forum/usb-laufwerk-unter-win-vista-finden-mittels-verschachtelter-for-schleife-173096.html
Ausgedruckt am: 23.12.2024 um 08:12 Uhr
25 Kommentare
Neuester Kommentar
Hallo Rob400!
Ob wohl der Ansatz unter Batchdatei UNTER VISTA - Abfrage einer bestimmten USB-Platte (Laufwerksbuchstabe kann varieren) helfen könnte?
Grüße
bastla
Ob wohl der Ansatz unter Batchdatei UNTER VISTA - Abfrage einer bestimmten USB-Platte (Laufwerksbuchstabe kann varieren) helfen könnte?
Grüße
bastla
Hallo rob400!
... bzw konkret: Es kommt auf den "
Grüße
bastla
"USB-Festplatte leider nicht erkannt!"
ist ja auch die richtige Reaktion darauf, dass Du einen Stick verwendest ... ... bzw konkret: Es kommt auf den "
DriveType
"-Wert an - für einen Stick wäre das 1, für die Platte 2. Wenn beide Medienarten möglich sein sollen, ändere die Zeile 3 aufecho Set fso=CreateObject("Scripting.FileSystemObject"):For Each D In fso.Drives:If D.DriveType^<=2 Then If D.IsReady Then If fso.FileExists(D.DriveLetter^&":\chekk.dat") Then WScript.Echo D.DriveLetter:Exit For>"%GUDL%"
bastla
Hi,
wenn du sowieso auf dem entsprechenden Laufwerk eine Semaphor-Datei anlegst, kannst du dir den ganzen Schnickschnack sparen und zur Suche des gewünschten Laufwerks einen Einzeiler verwenden:
Gruß
wenn du sowieso auf dem entsprechenden Laufwerk eine Semaphor-Datei anlegst, kannst du dir den ganzen Schnickschnack sparen und zur Suche des gewünschten Laufwerks einen Einzeiler verwenden:
for %%a in (C 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 exist %%a:\chekk.dat @echo Laufwerk ist %%a && set "LW=%%a"
Gruß
ev vorhandenen Kartenleserslots keine Laufwerksbuchstaben
Hamwa nich, kriejen wa ooch nich.
Vermutlich (?) verhalten die sich aber auch nicht anders als ein CD/DVD-Laufwerk ohne eingelegtes Medium.
Man kann aber auch die Maximalliste auf die evtl. vorhanden möglichen Laufwerksbuchstaben verkürzen.
Gruß
Welches Laufwerk ist denn nun dein gewünschtes USB-Laufwerk und welchen Typ gibt dir
fsutil fsinfo drivetype LW:\
aus?
fsutil fsinfo drivetype LW:\
aus?
Dann kannst du
verwenden, In Liste definierst du vorher die bei dir max. vorhandenen Laufwerksbuchstaben (nur die, ohne : und \, aber mit Leerzeichen dazwischen).
Allerdings benötigt FSUTIL Administratorrechte bzw. eine entsprechend angepasste UAC unter Vista / Win7
Einfacher wäre es mit der Semaphor-Datei bzw. mit VBScript, die funktionieren ohne.
For %%a in (%LISTE%) do fsutil fsinfo drivetype %%a:\ | findstr "Austauschbar" && set LW=%%a
Allerdings benötigt FSUTIL Administratorrechte bzw. eine entsprechend angepasste UAC unter Vista / Win7
Einfacher wäre es mit der Semaphor-Datei bzw. mit VBScript, die funktionieren ohne.
Ich heiße zwar nicht bastla, kann dir die Info aber auch vermitteln:
Du müsstest also <=2 in =1 ändern..
- 0="Unknown"
- 1="Removable"
- 2="Fixed"
- 3="Network"
- 4= "CD-ROM"
- 5="RAM Disk"
Du müsstest also <=2 in =1 ändern..
@bastla
Bitte sehr, dafür nehme ich nichts. *gg
Das mit dem Stick=1 stimmt aber nicht immer. Wenn der Stick als MBR-Device formatiert ist, hat er die 2 und wird als ganz normale Festplatte erkannt.
Gruß
Kaputtnick
Bitte sehr, dafür nehme ich nichts. *gg
Das mit dem Stick=1 stimmt aber nicht immer. Wenn der Stick als MBR-Device formatiert ist, hat er die 2 und wird als ganz normale Festplatte erkannt.
Gruß
Kaputtnick
Aber <=2 beinhaltet auch "Unknown" bzw. in fsutil "Stammverzeichnis nicht vorhanden" und führt dann evtl. auch zum Fehler (wenn's nicht ready sein sollte) .
Danke, nett von dir. Allerdings ging es dem TO ja um die Version ohne Semaphor und mit seiner Version von 16:14 landet er eben bei C:.
Auf der anderen Seite müsstest du mich doch soweit kennen, dass ich nur sehr selten fertige Lösungen, sondern nur Denkansätze liefere. Schließlich sollten unsere TOs auch mal selbst etwas gefordert werden, was ja meistens auch klappt.
Auf der anderen Seite müsstest du mich doch soweit kennen, dass ich nur sehr selten fertige Lösungen, sondern nur Denkansätze liefere. Schließlich sollten unsere TOs auch mal selbst etwas gefordert werden, was ja meistens auch klappt.
und das wird sich über "DriveType" nicht lösen lassen
Das ist richtig, hat aber auch niemand behauptet. Deshalb ja entweder ein(en) Semaphor nutzen oder eben Volume-Seriennummer, Label oder sonstige spezifische Merkmale zusätzlich verwenden, dann ist man (fast) immer auf der sicheren Seite.
So könnten wir dann verbleiben ...
... besonders, da ganz weit oben etwas in der Art erste 3 Stellen des Labels = "USB" zu entnehmen ist - dann sollte sogar etwas (Ungetestetes) wie in etwa
zum Ziel führen.
Grüße
bastla
[Edit[ "VolumeName" richtig gestellt [/Edit]
... besonders, da ganz weit oben etwas in der Art erste 3 Stellen des Labels = "USB" zu entnehmen ist - dann sollte sogar etwas (Ungetestetes) wie in etwa
echo Set fso=CreateObject("Scripting.FileSystemObject"):For Each D In fso.Drives:If D.DriveType=1 Or D.DriveType=2 Then If D.IsReady Then If UCase(Left(D.VolumeName,3))="USB" Then WScript.Echo D.DriveLetter:Exit For>"%GUDL%"
Grüße
bastla
[Edit[ "VolumeName" richtig gestellt [/Edit]