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, 2865 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von flyingmichael zum Thema Visual Studio ...

Netzwerkmanagement
gelöst Im Anmeldeskript ein Laufwerk mit einem anderen User und Pw mappen unsicher? (10)

Frage von M.Marz zum Thema Netzwerkmanagement ...

Batch & Shell
gelöst EDI Dateien auf Inhalt prüfen und verschieben (6)

Frage von ThomasKern zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...