Top-Themen

Aktuelle Themen (A bis Z)

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 USB-Laufwerk unter WIN VISTA finden mittels verschachtelter FOR-Schleife

Mitglied: 99046

99046 (Level 1)

14.09.2011, aktualisiert 18.10.2012, 3436 Aufrufe, 25 Kommentare, 1 Danke

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:

01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
Set SuchLW= & Set LW= & Set Chckloibl= & Set Liste= & set VLaibl=  
04.
Set Chckloibl=USB 
05.
 
06.
for /F "skip=1" %%a in ('fsutil fsinfo drives ^| find ":\"') do set "Liste=!Liste! %%a" 
07.
Set Liste=%liste:\=% 
08.
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 
09.
 
10.
Set LW=%LW:~0,-1% 
11.
echo. && @echo Backuplaufwerk %LW% && echo. && pause
Ich komme nicht weiter, erhalte keine Ausgabe -
hat jemand einen Tip ?

Vielen Dank !
Rob
Mitglied: Skyemugen
14.09.2011 um 14:00 Uhr
Aloha,

auch schon als Administrator ausgeführt?

greetz André
Bitte warten ..
Mitglied: 99045
14.09.2011 um 14:28 Uhr
Hi,

Befehle in deiner Zeile 03 trennen, jeweils eine Zeile für jeden SET-Befehl.

Zum Testen

@echo on

benutzen!

Gruß
Bitte warten ..
Mitglied: bastla
14.09.2011, aktualisiert 18.10.2012
Hallo Rob400!

Ob wohl der Ansatz unter Batchdatei UNTER VISTA - Abfrage einer bestimmten USB-Platte (Laufwerksbuchstabe kann varieren) helfen könnte?

Grüße
bastla
Bitte warten ..
Mitglied: 99046
15.09.2011 um 14:51 Uhr
Hallo,
danke für eure schnellen Antworten.
ja, ich habe als Administrator ausgeführt.

Dieser Code: (habe "chekk.dat" auf dem USB-Stick angelegt)
01.
@echo off & setlocal 
02.
set "GUDL=%temp%\GetUSBDriveLetter.vbs" 
03.
echo 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%" 
04.
echo Next>>"%GUDL%" 
05.
set LW= 
06.
for /f %%i in ('cscript //nologo "%GUDL%"') do set LW=%%i: 
07.
del "%GUDL%" 
08.
if not defined LW cls & echo USB-Festplatte leider nicht erkannt! & echo. & pause & goto :eof 
09.
echo USB-Festplatte ist Laufwerk %LW%
bringt:
"USB-Festplatte leider nicht erkannt!"

Dieser Code:
01.
::	@echo off & setlocal 
02.
@echo off  
03.
cd c:\ 
04.
@echo on & setlocal 
05.
Set Chckloibl=USB 
06.
set LW= 
07.
set Liste= 
08.
FOR /F "tokens=* delims=:\" %%a in ('"fsutil fsinfo drives"') do set "Liste=%%a" 
09.
echo %Liste% 
10.
Set Liste=%liste:\=% 
11.
echo %Liste% 
12.
Set Liste=%liste:~11% 
13.
echo %Liste% 
14.
 
15.
REM	wie bastel ich das IF NOT rein ?	## 
16.
for %%a in ("%Liste:~,2%") do for /f "tokens=6" %%l in ('vol %%a') DO set "VLaibl=%%l" & if "!VLaibl:~0,3!"=="%Chckloibl%" set LW=%%a 
17.
REM	if not:   Set Liste=%liste:~3% 
18.
    / 2>nul 
19.
 
20.
echo %VLaibl% 
21.
echo %Liste% 
22.
echo %LW%
hat folgende Ausgabe:
01.
C:\>Set Chckloibl=USB 
02.
C:\>set LW= 
03.
C:\>set Liste= 
04.
C:\>FOR /F "tokens=* delims=:\" %a in ('"fsutil fsinfo drives"') do set "Liste=%a" 
05.
C:\>set "Liste=Laufwerke: C:\ E:\ F:\ G:\ H:\ " 
06.
C:\>echo Laufwerke: C:\ E:\ F:\ G:\ H:\ 
07.
Laufwerke: C:\ E:\ F:\ G:\ H:\ 
08.
C:\>Set Liste=Laufwerke: C: E: F: G: H: 
09.
C:\>echo Laufwerke: C: E: F: G: H: 
10.
Laufwerke: C: E: F: G: H: 
11.
 
12.
C:\>Set Liste=C: E: F: G: H: 
13.
C:\>echo C: E: F: G: H: 
14.
C: E: F: G: H: 
15.
C:\>REM wie bastel ich das IF NOT rein ?        ## 
16.
C:\>for %a in ("C:") do for /F "tokens=6" %l in ('vol %a') DO set "VLaibl=%l"   & if "!VLaibl:~0,3!" == "USB" set LW=%a /  2>nul 
17.
C:\>for /F "tokens=6" %l in ('vol "C:"') DO set "VLaibl=%l"   & if "!VLaibl:~0,3!" == "USB" set LW="C:" /  2>nul 
18.
C:\>set "VLaibl=SYSTEM"   & if "!VLaibl:~0,3!" == "USB" set LW="C:" /  2>nul 
19.
C:\>echo SYSTEM 
20.
SYSTEM 
21.
 
22.
C:\>echo C: E: F: G: H: 
23.
C: E: F: G: H: 
24.
 
25.
C:\>echo 
26.
ECHO ist eingeschaltet (ON).
Weiß jemand Rat für Zeile 15-18 ?
Danke !

Grüsse
Rob
Bitte warten ..
Mitglied: bastla
15.09.2011 um 15:16 Uhr
Hallo rob400!
"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 auf
echo 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%"
Grüße
bastla
Bitte warten ..
Mitglied: 99045
15.09.2011 um 15:20 Uhr
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:
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ß
Bitte warten ..
Mitglied: bastla
15.09.2011 um 15:25 Uhr
... solltest aber dann besser ev vorhandenen Kartenleserslots keine Laufwerksbuchstaben zugeordnet haben ...

Grüße
bastla
Bitte warten ..
Mitglied: 99045
15.09.2011 um 15:53 Uhr
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ß
Bitte warten ..
Mitglied: 99046
15.09.2011 um 16:15 Uhr
noch mal danke an euch !

@bastla, klappt jetzt. Klasse.
geht s auch ohne Semaphore-Datei ?
01.
@echo off & setlocal 
02.
set "GUDL=%temp%\GetUSBDriveLetter.vbs" 
03.
echo Set fso=CreateObject("Scripting.FileSystemObject"):For Each D In fso.Drives:If D.DriveType^<=2 Then If D.IsReady Then WScript.Echo D.DriveLetter:Exit For>"%GUDL%" 
04.
echo Next>>"%GUDL%" 
05.
set LW= 
06.
for /f %%i in ('cscript //nologo "%GUDL%"') do set LW=%%i: 
07.
del "%GUDL%" 
08.
if not defined LW cls & echo USB-Festplatte leider nicht erkannt! & echo. & pause & goto :eof 
09.
echo USB-Festplatte ist Laufwerk %LW%
bringt Fehler:
"USB-Festplatte ist Laufwerk C:"

(MIT Semaphore: "USB-Festplatte ist Laufwerk H:"
Bitte warten ..
Mitglied: 99045
15.09.2011 um 16:25 Uhr
Welches Laufwerk ist denn nun dein gewünschtes USB-Laufwerk und welchen Typ gibt dir
fsutil fsinfo drivetype LW:\
aus?
Bitte warten ..
Mitglied: 99046
15.09.2011 um 16:29 Uhr
H: ist korrekt.

01.
C:\>fsutil fsinfo drivetype h: 
02.
h: - Austauschbares Laufwerk 
03.
 
04.
C:\>vol h: 
05.
 Datenträger in Laufwerk H: ist USB_xxx 
06.
 Volumeseriennummer: xxxx-xxxx
Bitte warten ..
Mitglied: 99045
15.09.2011 um 16:35 Uhr
Dann kannst du
For %%a in (%LISTE%) do fsutil fsinfo drivetype %%a:\ | findstr "Austauschbar" && set LW=%%a
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.
Bitte warten ..
Mitglied: 99046
15.09.2011 um 16:44 Uhr
@99045, Danke für die Info.

@bastla, hast Du noch n Tip, wie die Laufwerkerkennung mit Deinem obigen Script,
aber ohne Semaphore-Datei
(d.h. für beliebige(n) USB Stick / Platte) geht ?

Danke, Rob
Bitte warten ..
Mitglied: 99045
15.09.2011 um 16:51 Uhr
Ich heiße zwar nicht bastla, kann dir die Info aber auch vermitteln:

  • 0="Unknown"
  • 1="Removable"
  • 2="Fixed"
  • 3="Network"
  • 4= "CD-ROM"
  • 5="RAM Disk"

Du müsstest also <=2 in =1 ändern..
Bitte warten ..
Mitglied: 99046
15.09.2011 um 17:03 Uhr
@99045, Klasse.

Danke für die Unterstützung !

Gruss,
Rob
Bitte warten ..
Mitglied: bastla
15.09.2011 um 17:43 Uhr
@99045
Danke für's Dolmetschen von
... für einen Stick wäre das 1, für die Platte 2


Grüße
bastla
Bitte warten ..
Mitglied: 99045
15.09.2011 um 17:50 Uhr
@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 warten ..
Mitglied: bastla
15.09.2011 um 17:54 Uhr
@99045
hat er die 2 und wird als ganz normale Festplatte erkannt.
... was aber nicht zur "Nicht-Erkennung" durch die erste Version geführt hätte (abgesehen davon war das ja auch ein Grund dafür, die Variante "<=2" anzubieten) ...

Grüße
bastla
Bitte warten ..
Mitglied: 99045
15.09.2011 um 17:56 Uhr
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) .
Bitte warten ..
Mitglied: bastla
15.09.2011 um 18:02 Uhr
Ich hatte vorhin schon zur Einschränkung "... aber natürlich wäre noch der Fall "0" auszuschließen" angesetzt, wollte Dir aber die Freude nicht nehmen ...

Grüße
bastla
Bitte warten ..
Mitglied: 99045
15.09.2011 um 18:05 Uhr
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.
Bitte warten ..
Mitglied: bastla
15.09.2011 um 18:13 Uhr
Allerdings ging es dem TO ja um die Version ohne Semaphor
aber auch um
für beliebige(n) USB Stick / Platte
- und das wird sich über "DriveType" nicht lösen lassen ...

Grüße
bastla
Bitte warten ..
Mitglied: 99045
15.09.2011 um 18:18 Uhr
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.
Bitte warten ..
Mitglied: bastla
15.09.2011 um 18:24 Uhr
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
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%"
zum Ziel führen.

Grüße
bastla

[Edit[ "VolumeName" richtig gestellt [/Edit]
Bitte warten ..
Mitglied: 99046
15.09.2011 um 21:23 Uhr
Hallo noch mal,

... es führt zum Ziel, prima Verbesserung ... exakt nach Wunsch !

Ein weiteres Mal großes DANKE an euch beide !

Gruss,
Rob
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Verschachtelte FOR-Schleife mit einem Argument

gelöst Frage von mp-homeBatch & Shell3 Kommentare

Hallo Forum, ich versuche mehrere FOR-Schleifen in eine verschachtelte FOR-Schleife zu ändern. Leider scheine ich zu doof für dieses ...

Batch & Shell

Verschachtelte For Schleife für Batch Neuling

Frage von yperiuBatch & Shell3 Kommentare

Hallo liebe Profis, ich habe eine sehr umfangreiche Benchmark-Schleife zum Laufen zu bringen, die ich ohne For 72 mal ...

Batch & Shell

In einer verschachtelten For-Schleife Ping info auslesen

gelöst Frage von Tommy-TyrolBatch & Shell4 Kommentare

Hallo allerseits, quäle mich seit einiger Zeit mit folgendem Problem. In einer Textdatei (ipfil.txt) stehen IP-Adressen von rechnern welche ...

Batch & Shell

Batchfile MSDOS - Berechnung in verschachtelter FOR-Schleife

gelöst Frage von KlimatorBatch & Shell3 Kommentare

Hallo zusammen, ich möchte in einer dreifach verschachtelten FOR-Schleife eine Berechnung auf Grundlage der drei hochgezählten Variablen vornehmen, doch ...

Neue Wissensbeiträge
Windows 10
Windows 10 Oktober 2018 Update: Es ist wieder da
Tipp von Bowsette vor 30 MinutenWindows 10

Ein neuer Versuch von Microsoft das Windows 10 Oktober 2018 Update, auch bekannt als 1809, an den Mann zu ...

Windows Server

Windows Server 2016: Achtung - ab heute gibt es wieder Express Updates

Information von kgborn vor 11 StundenWindows Server1 Kommentar

Kurze Info für Administratoren, die Windows Server 2016 per WSUS/SCCM mit Updates betanken. Ab heute gibt es für Windows ...

Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 1 TagWindows Netzwerk17 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 2 TagenVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Heiß diskutierte Inhalte
Entwicklung
Meine Nachbarn sehen meinen Internet Trafic
gelöst Frage von beatnguEntwicklung51 Kommentare

Hallo Also ich wohne in einem Mehrparteien Haus mit 24 wohnungen. Meine nachbaren im letzten stock fummeln immer an ...

Windows 10
Windows 10 mit CRITICAL PROCESS DIED
Frage von liquidbaseWindows 1028 Kommentare

Das aktuelle Problem was ich habe steht bereits im Threadtitel. Etwas mehr zum Hintergrund soll nun folgen. Problemkind ist ...

Microsoft Office
Lizenzierung
Frage von opc123Microsoft Office28 Kommentare

Hallo, eventuell ein oft bekanntes Thema. Office 365 ist mir zu teuer, da wir als Bildungsträger andere Konditionen beim ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP19 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...