Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

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, 2889 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
Peripheriegeräte
gelöst Verwendung von drei SATA 3 LAufwerken 5,25 Zoll (6)

Frage von Novum23 zum Thema Peripheriegeräte ...

Windows 10
gelöst Auf Softwareupdates prüfen (4)

Frage von honeybee zum Thema Windows 10 ...

Visual Studio
gelöst Remotedienst prüfen mit Visual Basic (1)

Frage von flyingmichael zum Thema Visual Studio ...

Switche und Hubs
gelöst Verwendung Twinax (5)

Frage von Philipp711 zum Thema Switche und Hubs ...

Neue Wissensbeiträge
Firewall

PfSense OpenVPN beschleunigen

Tipp von Dobby zum Thema Firewall ...

Utilities

CCleaner 5.33 mit Malware infiziert

(25)

Information von SeaStorm zum Thema Utilities ...

Windows Server

Exchange Server 2016 Probleme auf Server 2016 mit iOS 11 Mailapp

Information von Oneplus zum Thema Windows Server ...

Internet

Pirate Bay lässt heimlich Krypto-Miner auf Nutzer-PCs laufen

(5)

Information von BassFishFox zum Thema Internet ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
gelöst Problem mit DELL 815R Server und Windows Bluescreen (24)

Frage von Leo-le zum Thema Festplatten, SSD, Raid ...

Utilities
CCleaner 5.33 mit Malware infiziert (24)

Information von SeaStorm zum Thema Utilities ...

JavaScript
gelöst Kopierschutz auf Webseite (13)

Frage von honeybee zum Thema JavaScript ...

Windows Server
Änderung Subnetz an AD Standort (13)

Frage von hansdampf zum Thema Windows Server ...