Zaxon Posted January 13, 2006 Share Posted January 13, 2006 We you go to close virtual/net drives, you sometimes get a message saying that there a files still open on the drive. Is there anyway in windows to determine whether a given drive has files open on it, or still is actively using the drive in some way? I want my scripts to tap into this. Link to comment Share on other sites More sharing options...
flyingboz Posted January 13, 2006 Share Posted January 13, 2006 We you go to close virtual/net drives, you sometimes get a message saying that there a files still open on the drive. Is there anyway in windows to determine whether a given drive has files open on it, or still is actively using the drive in some way? I want my scripts to tap into this.Look into handle.exe from sysinternals ...One of the reasons for this behavioris cmd windows left open w/ the current directory located on the drive you wish to disconnect, tho -- no file open, but the behavior will occur - you can use the Process functions and EnvGet to detect / rectify that cause. Reading the help file before you post... Not only will it make you look smarter, it will make you smarter. Link to comment Share on other sites More sharing options...
Zaxon Posted January 13, 2006 Author Share Posted January 13, 2006 Look into handle.exe from sysinternals ...Perfect! Thanks for that flyingboz.Now, the only issue I have is maping the results to their proper drive letters. I don't know if its not interpreting the virtual drives properly or what, but it gives me the following.As an example, open hello.txt on c: and goodbye.txt on v:. From Handle, I get:blah blah c:\hello.txtblah blah c:3\goodbye.txtmeaning that I've got to GUESS what c:3 means drive wise. Now if you close the virtual drive and reopen it, it becomes c:4\ - the forth drive open. So the numbers change for the same drive. How do I make sense of this? If I'm trying to determine if there are any handles open on the v: drive, I have no idea what to call it, and it will be given a different number on different occasions. Link to comment Share on other sites More sharing options...
Zaxon Posted January 18, 2006 Author Share Posted January 18, 2006 How do I make sense of this? If I'm trying to determine if there are any handles open on the v: drive, I have no idea what to call it, and it will be given a different number on different occasions.OK. flyingboz may not know the answer to this. I've posted the same question at the official forum for handle.exe, but I'm getting no replies of any sort.So failing a resolution on this product, I'll open the question back up again and ask if anyone knows of another way of detecting of their are open handles on a given drive? Link to comment Share on other sites More sharing options...
seandisanti Posted January 18, 2006 Share Posted January 18, 2006 Perfect! Thanks for that flyingboz. Now, the only issue I have is maping the results to their proper drive letters. I don't know if its not interpreting the virtual drives properly or what, but it gives me the following. As an example, open hello.txt on c: and goodbye.txt on v:. From Handle, I get: blah blah c:\hello.txt blah blah c:3\goodbye.txt meaning that I've got to GUESS what c:3 means drive wise. Now if you close the virtual drive and reopen it, it becomes c:4\ - the forth drive open. So the numbers change for the same drive. How do I make sense of this? If I'm trying to determine if there are any handles open on the v: drive, I have no idea what to call it, and it will be given a different number on different occasions. OK. flyingboz may not know the answer to this. I've posted the same question at the official forum for handle.exe, but I'm getting no replies of any sort. So failing a resolution on this product, I'll open the question back up again and ask if anyone knows of another way of detecting of their are open handles on a given drive?well if your virtual drives all have a number after the drive letter but before the \, you could just: If IsNumber(StringMid($value,3,1) Then;if this evaluates to true, then it's on a virtual drive. right? Link to comment Share on other sites More sharing options...
Zaxon Posted January 18, 2006 Author Share Posted January 18, 2006 (edited) well if your virtual drives all have a number after the drive letter but before the \, you could just: If IsNumber(StringMid($value,3,1) Then;if this evaluates to true, then it's on a virtual drive. right?Riiight, but then there's this: meaning that I've got to GUESS what c:3 means drive wise. Now if you close the virtual drive and reopen it, it becomes c:4\ - the forth drive open. So the numbers change for the same drive....which means that the number changes every time. And if you have, say 5 virtual drives open, there's no way of telling, say, what drive #7 is. It isn't linked to any fixed drive letter. Is c:7\ v:? Is it x:? Who knows! Handle.exe certainly doesn't tell you. Edited January 18, 2006 by Zaxon Link to comment Share on other sites More sharing options...
seandisanti Posted January 18, 2006 Share Posted January 18, 2006 Riiight, but then there's this:...which means that the number changes every time. And if you have, say 5 virtual drives open, there's no way of telling, say, what drive #7 is. It isn't linked to any fixed drive letter. Is c:7\ v:? Is it x:? Who knows! Handle.exe certainly doesn't tell you.ah, i was thinking that it had a drive letter (being the virtual drive) and a number... Link to comment Share on other sites More sharing options...
Fur Posted January 18, 2006 Share Posted January 18, 2006 There is a secret arcane Microsoft utility called 'oh.exe' which shows all open file handles on your system and which process has them open. Google around and eventually you'll find it! Good luck! Link to comment Share on other sites More sharing options...
Zaxon Posted January 18, 2006 Author Share Posted January 18, 2006 Thanks anyway cameronsdad.There is a secret arcane Microsoft utility called 'oh.exe' which shows all open file handles on your system and which process has them open. Google around and eventually you'll find it! Good luck!With a few secret handshakes and wearing an apron while riding a goat, I found oh.exe. Now, it lists every file starting with \ .So c:\hello.txt and d:\hello.txt are listed as:blah blah \hello.txtblah blah \hello.txtSo it doesn't even acknowledge that the files are on different drives Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now