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

Prüfen ob Laufwerk in Verwendung ist

Frage Entwicklung Batch & Shell

Mitglied: Quijote

Quijote (Level 1) - Jetzt verbinden

17.07.2012 um 19:19 Uhr, 2869 Aufrufe, 10 Kommentare

Hi,

ich muss Abfragen ob auf ein Laufwerk zugegeriffen wird. Z.B. wenn momentan ein Programm darauf zugreift.
Ich benötige es für ein Script das ein LW nach 10 min. aushängt, wenn es gerade nicht verwendet wird.

Gibt es ein Befehl/Skript mit dem man das machen kann?



Als Beispiel:

01.
Mount Z: 
02.
Warte 10 min. 
03.
Prüfe ob LW in Verwendung. 
04.
 
05.
Wenn nicht: unmount Z: 
06.
Ansonsten: warte 10 min. ...


Mitglied: AndreasHoster
18.07.2012 um 15:11 Uhr
Handle kann Dir die File Handles der Programme auslesen.
Siehe http://technet.microsoft.com/de-de/sysinternals/bb896655.aspx

Damit könnte man sehen, ob noch jemand was im Zugriff habt.
01.
handle -a | find "z:\" /i 
02.
if errorlevel 1 goto KeinZugriff
Wenn es ein Netzwerkshare ist, dann sieht es etwas anders aus:
01.
handle -a | find "\Device\LanmanRedirector\;Z:" /i 
02.
if errorlevel 1 goto KeinZugriff
Bitte warten ..
Mitglied: Quijote
20.07.2012 um 17:31 Uhr
Danke für die Hilfe, aber das klappt leider nicht.

Wenn ich die Errorlevel mit If abfrage, kommt sowohl 1 als auch 0 dabei raus.
Ich habe das mit echo ausprobiert.
Bitte warten ..
Mitglied: AndreasHoster
23.07.2012 um 10:00 Uhr
Der Errorlevel kann nicht gleichzeitig 0 und 1 sein.
Könntest Du mal näher erläutern was Du da meinst, bzw. am Besten den Code posten, mit dem Du abfragst?
Bitte warten ..
Mitglied: Quijote
27.07.2012 um 22:12 Uhr
Tut mir leid, hat etwas gedauert.

Mein Testscript ist folgendes:

01.
start LW_X.bat 
02.
 
03.
timeout /T 5 /NOBREAK 
04.
 
05.
handle -a | find "X:\" /i 
06.
if errorlevel 1 goto KeinZugriff 
07.
if errorlevel 0 goto Zugriff 
08.
 
09.
:KeinZugriff 
10.
echo derzeit kein Zugriff 
11.
 
12.
:Zugriff 
13.
echo Laufwerk ist besetzt 
14.
 
15.
 
16.
PAUSE
Ausgeben tut die Kommandozeile beides, also "derzeit kein Zugriff" und "Laufwerk ist besetzt". Egal ob ich jetzt darauf zugreife oder nicht.
Bitte warten ..
Mitglied: bastla
27.07.2012, aktualisiert um 23:56 Uhr
Hallo Quijote!
Ausgeben tut die Kommandozeile beides, also "derzeit kein Zugriff" und "Laufwerk ist besetzt".
Das ist zumindest für den Fall, dass ein Zugriff erfolgt, klar - hast Du Dir überlegt, was nach Zeile 10 in weiterer Folge passiert?
Ich würde das ab Zeile 5 eher so versuchen:
01.
set "LW=X:" 
02.
handle "%LW%\ | findstr /i "%LW%\\" && ( 
03.
    echo Zugriff 
04.
) || ( 
05.
    echo Kein Zugriff 
06.
)
Ev sollten auch noch "X:\$Extend\$ObjId" und "X:\System Volume Information\tracking.log" ignoriert werden - dann als Zeile 2:
handle %LW%\|findstr /ivc:"%LW%\\System Volume Information\\tracking.log" /c:"%LW%\\\$Extend\\\$ObjId"|findstr /i "%LW%\\" && ( 
Die Erklärung für die zusätzlichen "\" findest Du übrigens mit "findstr /?" ...

Grüße
bastla
Bitte warten ..
Mitglied: Quijote
28.07.2012 um 11:17 Uhr
Hi bastla!

Ich habe zwar nicht alles vom Code verstanden, aber wenn ich den so übernehme bekomme ich am Ende immer die Meldung "Kein Zugriff". Unabhängig davon ob ich darauf zugreife oder nicht.

Gruß
Quijote
Bitte warten ..
Mitglied: bastla
28.07.2012, aktualisiert um 11:32 Uhr
Hallo Quijote!

In die Zeile 2 ist ein Anführungszeichen reingerutscht - sollte besser so aussehen:
handle %LW%\ | findstr /i "%LW%\\" && (
Ich habe zwar nicht alles vom Code verstanden
Mein Ansatz macht eigentlich nix anderes, als Du mit den "if errorlevel"-Abfragen versucht hast (Verknüpfung mit "&&" entspricht "Errorlevel = 0" und mit "||" Errorlevel <> 0) - Du kannst das auch mit Deinem ursprünglichen
handle -a | find "X:\" /i
kombinieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Quijote
29.07.2012 um 14:34 Uhr
Zitat von bastla:
In die Zeile 2 ist ein Anführungszeichen reingerutscht - sollte besser so aussehen:
handle %LW%\ | findstr /i "%LW%\\" && (

Habe ich eben ausprobiert, aber bekomme trotzdem immer die Meldung "Kein Zugriff". Funktioniert das denn bei dir?

Vielen Dank und Grüße

Quijote
Bitte warten ..
Mitglied: bastla
29.07.2012 um 17:52 Uhr
Hallo Quijote!
Funktioniert das denn bei dir?
Ja; allerdings benötigt "handle" Admin-Rechte - wenn Du also nicht mit einem Admin-User testest, würde das Dein Ergebnis erklären ...

Grüße
bastla
Bitte warten ..
Mitglied: Quijote
31.07.2012 um 15:41 Uhr
Leider bringt das auch nichts. Habe es nochmal mit einem USB-Stick gestestet (vielleicht liegts ja am Laufwerk) aber klappt auch nicht.
Bitte warten ..
Ähnliche Inhalte
Server-Hardware
gelöst HP Microserver Gen8 + externes LTO-6 Laufwerk (2)

Frage von runasservice zum Thema Server-Hardware ...

Switche und Hubs
gelöst Verwendung Twinax (5)

Frage von Philipp711 zum Thema Switche und Hubs ...

Windows Server
Laufwerk verstecken im Explorer (10)

Frage von chattie zum Thema Windows Server ...

Windows Server
Citrix Laufwerk ohne Sitzung verwenden? (2)

Frage von dodo-r zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Installation
Eine etwas (wirklich) speziellere Frage: Windows 10-Installation über (16)

Frage von DerFurrer zum Thema Windows Installation ...

Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...

Multimedia & Zubehör
gelöst Iphone 6 prob (12)

Frage von jensgebken zum Thema Multimedia & Zubehör ...

Festplatten, SSD, Raid
gelöst Fehlerhafte Blöcke im RAID 10 (12)

Frage von Kojak-LE zum Thema Festplatten, SSD, Raid ...