Jump to content

Batch file to show Network drives


Recommended Posts

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

Hi, I think there's an error in there, at least from Vista's perspective

.... this is the result from Vista's shell <paste> -

 

C:\>foo

 

C:\>rem @echo off

 

C:\>for /F "delims=" %a in ('fsutil fsinfo drives |more') do call :next

"%a"

 

C:\>call :next "Drives: C:\ D:\ E:\ "

 

C:\>set "var=Drives: C:\ D:\ E:\ "

 

C:\>set "var=:\"

 

C:\>fsutil fsinfo drivetype :\

:\ - No such Root Directory

 

C:\>shift

 

C:\>if not . == . goto :next

 

C:\>goto :EOF

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

 

 

"foxidrive" <gotcha@woohoo.invalid> wrote in message

news:4vfd44l75et0ks3p1ses92n0t5b7hicgkp@4ax.com...

> On Wed, 4 Jun 2008 09:14:38 -0400, "Dean Wells \(MVP\)"

> <dwells@maskmsetechnology.com> wrote:

>

>>It's always strange to me just how much pleasure I seem to derive from

>>working in this (let's face it) old & crappy little shell ... but,

>>seemingly like the rest of you, I'm quite happy doing so and will

>>readily jump on the 'let's see how many alternatives there are'

>>band-wagon whilst striving for the apparent golden-egg of batch

>>syntax:

>>that ever elusive 'let's make it a one-liner.'

>

> Here's more conventional syntax in my contribution after following

> this

> thread:

>

>

> @echo off

> for /f "delims=" %%a in ('fsutil fsinfo drives^|more') do call :next

> "%%a"

> goto :EOF

> :next

> set "var=%~1"

> set "var=%var:~-3,2%"

> fsutil fsinfo drivetype %var%

> shift

> if not %1.==. goto :next

>

>

>

  • Replies 49
  • Created
  • Last Reply
Guest foxidrive
Posted

Re: Batch file to show Network drives

 

On Wed, 4 Jun 2008 12:45:20 -0400, "Dean Wells \(MVP\)"

<dwells@maskmsetechnology.com> wrote:

>Hi, I think there's an error in there, at least from Vista's perspective

>... this is the result from Vista's shell <paste> -

 

Nods.

 

It works under XP pro - I don't have Vista to test with.

>C:\>foo

>

>C:\>rem @echo off

>

>C:\>for /F "delims=" %a in ('fsutil fsinfo drives |more') do call :next

>"%a"

>

>C:\>call :next "Drives: C:\ D:\ E:\ "

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"foxidrive" <gotcha@woohoo.invalid> wrote in message

news:srnd449nnacjl4hfbheqcuar107o5gonr8@4ax.com...

> On Wed, 4 Jun 2008 12:45:20 -0400, "Dean Wells \(MVP\)"

> <dwells@maskmsetechnology.com> wrote:

>

>>Hi, I think there's an error in there, at least from Vista's perspective

>>... this is the result from Vista's shell <paste> -

>

> Nods.

>

> It works under XP pro - I don't have Vista to test with.

 

 

I have some extra *personal* criteria:

 

General principle: Runs on anybody's machine (where it makes sense)

 

No temp files if they can be avoided

No VBScript if it can be avoided -- once necessary go to Perl or Ruby

(But ONLY Perl is on ALL of my machines though Ruby is gaining

ground)

No external utilities if they can be avoided, Support tools not as bad as

other

stuff, Reskit, then UnxUtils, and some of my own personal tools, then

Cygwin

 

Prefer not to use environment variables, but this is not a rule

Once line when possible but don't get crazy

Working as a DosKey macros is desirable

(Although I use this for starting externa programs that aren't on the

path too)

Preferably works on all versions of the OS (where the program makes sense)

 

If it is too difficult for those rules then use Perl, Ruby, or a custom C/C#

program

 

So repeating my best efforts from last night:

 

[Following is all one line for a batch file: drives.cmd]

 

@for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @fsutil fsinfo

drivetype %%a

 

 

And this version works on (at least) Vista:

[Following is all one line for a batch file: drives.cmd]

 

@for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do @for %%A

in (%%b %%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 @fsutil fsinfo drivetype %%A

 

 

Oddly enought the XP/2003 is not less awkward.

 

Output looks like this (with fix width font so it lines up there):

 

A: - Remote/Network Drive

C: - Fixed Drive

D: - Fixed Drive

E: - Fixed Drive

F: - CD-ROM Drive

G: - CD-ROM Drive

H: - CD-ROM Drive

J: - Remote/Network Drive

O: - Remote/Network Drive

P: - Remote/Network Drive

Q: - Remote/Network Drive

R: - CD-ROM Drive

S: - Remote/Network Drive

T: - Remote/Network Drive

U: - Remote/Network Drive

V: - Remote/Network Drive

W: - Remote/Network Drive

X: - Remote/Network Drive

Y: - Remote/Network Drive

Z: - Remote/Network Drive

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:%23j5g1TkxIHA.1772@TK2MSFTNGP03.phx.gbl...

> It's always strange to me just how much pleasure I seem to derive from

> working in this (let's face it) old & crappy little shell ... but,

> seemingly like the rest of you, I'm quite happy doing so and will readily

> jump on the 'let's see how many alternatives there are' band-wagon whilst

> striving for the apparent golden-egg of batch syntax: that ever elusive

> 'let's make it a one-liner.' Anyway, I came up with this improvement on

> my original syntax, it too limits the number of iterations resulting from

> the for loop to only those necessary (note that it's a one-liner; well,

> sorta) -

>

> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c type

> "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil fsinfo

> drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

 

Cool. I never did understand (or really isolate) your Unicode trick

from that big batch file -- the one to remove the NULLS.

 

I ended up using a pipe to find on XP -- after using more as the

next best thing but admitting that more will fail (or at least ask for

key to continue) if there are more drives than screen lines.)

 

This last isn't a giant deal as I keep my screen MUCH bigger than

the maximum (?) 26 drive letters but not everyone does all of the

time.

 

> "Herb Martin" <news@learnquick.com> wrote in message

> news:OSAywudxIHA.2208@TK2MSFTNGP04.phx.gbl...

>>

>> "Bob I" <birelan@yahoo.com> wrote in message

>> news:er75LzXxIHA.5472@TK2MSFTNGP06.phx.gbl...

>>> See "net use" and "If exist" in Windows Help and support. Also there

>>> is a cmd prompt group that has some pretty sharp folks(cross posting

>>> this)

>>>

>>> http://news://msnews.microsoft.com/microsoft.public.win2000.cmdprompt.admin

>>>

>>> joshboski wrote:

>>>

>>>> I am currently trying to write a batch file that will delete a list

>>>> of

>>>> files from all of my network drives. The problem I am having is

>>>> getting the network drives. I am on a rather large network, and I

>>>> would like this to run on several different computers that may be

>>>> connected to different drives.

>>

>> I have been meaning to ask advice or figure the following out myself

>> so I will just post my solution and describe where it has problems.

>>

>> The following code WORKS on Vista, but not on 2003, nor on

>> XP if I recall the latter correctly.

>>

>> Following is all one line (in a batch file):

>>

>> @for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do

>> @for %%A in (%%b %%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 @fsutil fsinfo

>> drivetype %%A

>>

>>

>> =======================

>> Ugly but it works on Vista like this:

>>

>> A: - Remote/Network Drive

>> C: - Fixed Drive

>> D: - Fixed Drive

>> E: - Fixed Drive

>> F: - CD-ROM Drive

>> G: - CD-ROM Drive

>> H: - CD-ROM Drive

>> J: - Remote/Network Drive

>> O: - Remote/Network Drive

>> P: - Remote/Network Drive

>> Q: - Remote/Network Drive

>> R: - CD-ROM Drive

>> S: - Remote/Network Drive

>> T: - Remote/Network Drive

>> U: - Remote/Network Drive

>> W: - Remote/Network Drive

>> X: - Remote/Network Drive

>> Y: - Remote/Network Drive

>> Z: - Remote/Network Drive

>>

>>

>>

>

>

>

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

Nod, I thought of the same thing re: the letter-depth but figured it's

so nigh-on moot for the same reasons ...

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

 

 

"Herb Martin" <news@learnquick.com> wrote in message

news:eW$cX6nxIHA.4492@TK2MSFTNGP02.phx.gbl...

>

> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

> news:%23j5g1TkxIHA.1772@TK2MSFTNGP03.phx.gbl...

>> It's always strange to me just how much pleasure I seem to derive

>> from working in this (let's face it) old & crappy little shell ...

>> but, seemingly like the rest of you, I'm quite happy doing so and

>> will readily jump on the 'let's see how many alternatives there are'

>> band-wagon whilst striving for the apparent golden-egg of batch

>> syntax: that ever elusive 'let's make it a one-liner.' Anyway, I

>> came up with this improvement on my original syntax, it too limits

>> the number of iterations resulting from the for loop to only those

>> necessary (note that it's a one-liner; well, sorta) -

>>

>> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c

>> type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil

>> fsinfo drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

>

> Cool. I never did understand (or really isolate) your Unicode trick

> from that big batch file -- the one to remove the NULLS.

>

> I ended up using a pipe to find on XP -- after using more as the

> next best thing but admitting that more will fail (or at least ask for

> key to continue) if there are more drives than screen lines.)

>

> This last isn't a giant deal as I keep my screen MUCH bigger than

> the maximum (?) 26 drive letters but not everyone does all of the

> time.

>

>

>> "Herb Martin" <news@learnquick.com> wrote in message

>> news:OSAywudxIHA.2208@TK2MSFTNGP04.phx.gbl...

>>>

>>> "Bob I" <birelan@yahoo.com> wrote in message

>>> news:er75LzXxIHA.5472@TK2MSFTNGP06.phx.gbl...

>>>> See "net use" and "If exist" in Windows Help and support. Also

>>>> there

>>>> is a cmd prompt group that has some pretty sharp folks(cross

>>>> posting

>>>> this)

>>>>

>>>> http://news://msnews.microsoft.com/microsoft.public.win2000.cmdprompt.admin

>>>>

>>>> joshboski wrote:

>>>>

>>>>> I am currently trying to write a batch file that will delete a

>>>>> list

>>>>> of

>>>>> files from all of my network drives. The problem I am having is

>>>>> getting the network drives. I am on a rather large network, and I

>>>>> would like this to run on several different computers that may be

>>>>> connected to different drives.

>>>

>>> I have been meaning to ask advice or figure the following out myself

>>> so I will just post my solution and describe where it has problems.

>>>

>>> The following code WORKS on Vista, but not on 2003, nor on

>>> XP if I recall the latter correctly.

>>>

>>> Following is all one line (in a batch file):

>>>

>>> @for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do

>>> @for %%A in (%%b %%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 @fsutil fsinfo

>>> drivetype %%A

>>>

>>>

>>> =======================

>>> Ugly but it works on Vista like this:

>>>

>>> A: - Remote/Network Drive

>>> C: - Fixed Drive

>>> D: - Fixed Drive

>>> E: - Fixed Drive

>>> F: - CD-ROM Drive

>>> G: - CD-ROM Drive

>>> H: - CD-ROM Drive

>>> J: - Remote/Network Drive

>>> O: - Remote/Network Drive

>>> P: - Remote/Network Drive

>>> Q: - Remote/Network Drive

>>> R: - CD-ROM Drive

>>> S: - Remote/Network Drive

>>> T: - Remote/Network Drive

>>> U: - Remote/Network Drive

>>> W: - Remote/Network Drive

>>> X: - Remote/Network Drive

>>> Y: - Remote/Network Drive

>>> Z: - Remote/Network Drive

>>>

>>>

>>>

>>

>>

>>

>

>

Guest Esra Sdrawkcab
Posted

Re: Batch file to show Network drives -- simple methods for XP/2003/Vistawork now

 

Re: Batch file to show Network drives -- simple methods for XP/2003/Vistawork now

 

Herb Martin wrote:

> Ok (after obsessing a bit) this work on (at least) XP/2003:

>

> [Following is all one line for a batch file: drives.cmd]

>

> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @fsutil fsinfo

> drivetype %%a

>

>

well for me (XP Pro) it also gives a spurious Drives line:

 

Drives: - No such Root Directory

C:\ - Fixed Drive

D:\ - Fixed Drive

E:\ - Fixed Drive

Q:\ - CD-ROM Drive

 

where I have an "A" floppy drive with no disk present:

 

C:\WINDOWS>fsutil fsinfo drives

 

Drives: A:\ C:\ D:\ E:\ Q:\

 

C:\WINDOWS>

Guest Herb Martin
Posted

Re: Batch file to show Network drives -- simple methods for XP/2003/Vista work now

 

Re: Batch file to show Network drives -- simple methods for XP/2003/Vista work now

 

 

"Esra Sdrawkcab" <admin@127.0.0.1> wrote in message

news:oDD1k.3371$E41.3163@text.news.virginmedia.com...

> Herb Martin wrote:

>> Ok (after obsessing a bit) this work on (at least) XP/2003:

>>

>> [Following is all one line for a batch file: drives.cmd]

>>

>> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @fsutil fsinfo

>> drivetype %%a

>>

>>

> well for me (XP Pro) it also gives a spurious Drives line:

>

> Drives: - No such Root Directory

> C:\ - Fixed Drive

> D:\ - Fixed Drive

> E:\ - Fixed Drive

> Q:\ - CD-ROM Drive

>

> where I have an "A" floppy drive with no disk present:

>

> C:\WINDOWS>fsutil fsinfo drives

>

> Drives: A:\ C:\ D:\ E:\ Q:\

>

> C:\WINDOWS>

 

You can "if test" those out if you need to do so.

 

[Following is all one line for batch file]

@for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

"%%a"=="Drives:" fsutil fsinfo drivetype %%a

 

I prefer this method to using the "skip=1" in the "for"-loop

options since apparently 2003 has no problem and only

XP shows this.

 

I had seen no problem so didn't bother -- turns out I

tested the "XP" version mostly on 2003 and didn't see

that XP and 2003 were (slightly) different.

 

Go figure.

 

Heck, I don't REALLY even know why the "find" on a "slash"

works but have been assuming that it is just using the Nulls

to spit out separate lines.

 

I didn't "think this through" to get to this solution but was semi-randomly

trying FindStr, Find, type, copy looking for anything that would turn

the nulls into something else (spaces.)

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:eQRnffoxIHA.1768@TK2MSFTNGP03.phx.gbl...

> Nod, I thought of the same thing re: the letter-depth but figured it's so

> nigh-on moot for the same reasons ...

 

That's why I did like the pipe to find "\".

 

Here's the current one that doesn't mess up with "Drives:"

on XP (I hadn't notice the error until Esra pointed that

out (I was testing under 2003 mostly and who would have

thought that XP and 2003 which both WORK basicly

would be different in a new way?)

 

[Following is all one line for a batch file]

 

@for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

"%%a"=="Drives:" fsutil fsinfo drivetype %%a

 

 

I didn't use "For" option SKIP=1 because it would be different

for XP vs. 2003.

> --

> Dean Wells [MVP / Directory Services]

> MSEtechnology

> [[ Please respond to the Newsgroup only regarding posts ]]

> R e m o v e t h e m a s k t o s e n d e m a i l

>

>

> "Herb Martin" <news@learnquick.com> wrote in message

> news:eW$cX6nxIHA.4492@TK2MSFTNGP02.phx.gbl...

>>

>> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

>> news:%23j5g1TkxIHA.1772@TK2MSFTNGP03.phx.gbl...

>>> It's always strange to me just how much pleasure I seem to derive from

>>> working in this (let's face it) old & crappy little shell ... but,

>>> seemingly like the rest of you, I'm quite happy doing so and will

>>> readily jump on the 'let's see how many alternatives there are'

>>> band-wagon whilst striving for the apparent golden-egg of batch syntax:

>>> that ever elusive 'let's make it a one-liner.' Anyway, I came up with

>>> this improvement on my original syntax, it too limits the number of

>>> iterations resulting from the for loop to only those necessary (note

>>> that it's a one-liner; well, sorta) -

>>>

>>> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c

>>> type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil fsinfo

>>> drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

>>

>> Cool. I never did understand (or really isolate) your Unicode trick

>> from that big batch file -- the one to remove the NULLS.

>>

>> I ended up using a pipe to find on XP -- after using more as the

>> next best thing but admitting that more will fail (or at least ask for

>> key to continue) if there are more drives than screen lines.)

>>

>> This last isn't a giant deal as I keep my screen MUCH bigger than

>> the maximum (?) 26 drive letters but not everyone does all of the

>> time.

>>

>>

>>> "Herb Martin" <news@learnquick.com> wrote in message

>>> news:OSAywudxIHA.2208@TK2MSFTNGP04.phx.gbl...

>>>>

>>>> "Bob I" <birelan@yahoo.com> wrote in message

>>>> news:er75LzXxIHA.5472@TK2MSFTNGP06.phx.gbl...

>>>>> See "net use" and "If exist" in Windows Help and support. Also there

>>>>> is a cmd prompt group that has some pretty sharp folks(cross posting

>>>>> this)

>>>>>

>>>>> http://news://msnews.microsoft.com/microsoft.public.win2000.cmdprompt.admin

>>>>>

>>>>> joshboski wrote:

>>>>>

>>>>>> I am currently trying to write a batch file that will delete a list

>>>>>> of

>>>>>> files from all of my network drives. The problem I am having is

>>>>>> getting the network drives. I am on a rather large network, and I

>>>>>> would like this to run on several different computers that may be

>>>>>> connected to different drives.

>>>>

>>>> I have been meaning to ask advice or figure the following out myself

>>>> so I will just post my solution and describe where it has problems.

>>>>

>>>> The following code WORKS on Vista, but not on 2003, nor on

>>>> XP if I recall the latter correctly.

>>>>

>>>> Following is all one line (in a batch file):

>>>>

>>>> @for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do

>>>> @for %%A in (%%b %%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 @fsutil fsinfo

>>>> drivetype %%A

>>>>

>>>>

>>>> =======================

>>>> Ugly but it works on Vista like this:

>>>>

>>>> A: - Remote/Network Drive

>>>> C: - Fixed Drive

>>>> D: - Fixed Drive

>>>> E: - Fixed Drive

>>>> F: - CD-ROM Drive

>>>> G: - CD-ROM Drive

>>>> H: - CD-ROM Drive

>>>> J: - Remote/Network Drive

>>>> O: - Remote/Network Drive

>>>> P: - Remote/Network Drive

>>>> Q: - Remote/Network Drive

>>>> R: - CD-ROM Drive

>>>> S: - Remote/Network Drive

>>>> T: - Remote/Network Drive

>>>> U: - Remote/Network Drive

>>>> W: - Remote/Network Drive

>>>> X: - Remote/Network Drive

>>>> Y: - Remote/Network Drive

>>>> Z: - Remote/Network Drive

>>>>

>>>>

>>>>

>>>

>>>

>>>

>>

>>

>

>

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

Sadly, that still doesn't work under Vista ... the one-liner I posted

earlier seems to work across the board ... or perhaps I missed

something? -->

 

fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c

type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil fsinfo

drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

 

 

"Herb Martin" <news@learnquick.com> wrote in message

news:Ogx61KpxIHA.1980@TK2MSFTNGP02.phx.gbl...

>

> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

> news:eQRnffoxIHA.1768@TK2MSFTNGP03.phx.gbl...

>> Nod, I thought of the same thing re: the letter-depth but figured

>> it's so nigh-on moot for the same reasons ...

>

> That's why I did like the pipe to find "\".

>

> Here's the current one that doesn't mess up with "Drives:"

> on XP (I hadn't notice the error until Esra pointed that

> out (I was testing under 2003 mostly and who would have

> thought that XP and 2003 which both WORK basicly

> would be different in a new way?)

>

> [Following is all one line for a batch file]

>

> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

> "%%a"=="Drives:" fsutil fsinfo drivetype %%a

>

>

> I didn't use "For" option SKIP=1 because it would be different

> for XP vs. 2003.

>

>> --

>> Dean Wells [MVP / Directory Services]

>> MSEtechnology

>> [[ Please respond to the Newsgroup only regarding posts ]]

>> R e m o v e t h e m a s k t o s e n d e m a i l

>>

>>

>> "Herb Martin" <news@learnquick.com> wrote in message

>> news:eW$cX6nxIHA.4492@TK2MSFTNGP02.phx.gbl...

>>>

>>> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

>>> news:%23j5g1TkxIHA.1772@TK2MSFTNGP03.phx.gbl...

>>>> It's always strange to me just how much pleasure I seem to derive

>>>> from working in this (let's face it) old & crappy little shell ...

>>>> but, seemingly like the rest of you, I'm quite happy doing so and

>>>> will readily jump on the 'let's see how many alternatives there

>>>> are' band-wagon whilst striving for the apparent golden-egg of

>>>> batch syntax: that ever elusive 'let's make it a one-liner.'

>>>> Anyway, I came up with this improvement on my original syntax, it

>>>> too limits the number of iterations resulting from the for loop to

>>>> only those necessary (note that it's a one-liner; well, sorta) -

>>>>

>>>> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u

>>>> /c type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do

>>>> fsutil fsinfo drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

>>>

>>> Cool. I never did understand (or really isolate) your Unicode trick

>>> from that big batch file -- the one to remove the NULLS.

>>>

>>> I ended up using a pipe to find on XP -- after using more as the

>>> next best thing but admitting that more will fail (or at least ask

>>> for

>>> key to continue) if there are more drives than screen lines.)

>>>

>>> This last isn't a giant deal as I keep my screen MUCH bigger than

>>> the maximum (?) 26 drive letters but not everyone does all of the

>>> time.

>>>

>>>

>>>> "Herb Martin" <news@learnquick.com> wrote in message

>>>> news:OSAywudxIHA.2208@TK2MSFTNGP04.phx.gbl...

>>>>>

>>>>> "Bob I" <birelan@yahoo.com> wrote in message

>>>>> news:er75LzXxIHA.5472@TK2MSFTNGP06.phx.gbl...

>>>>>> See "net use" and "If exist" in Windows Help and support. Also

>>>>>> there

>>>>>> is a cmd prompt group that has some pretty sharp folks(cross

>>>>>> posting

>>>>>> this)

>>>>>>

>>>>>> http://news://msnews.microsoft.com/microsoft.public.win2000.cmdprompt.admin

>>>>>>

>>>>>> joshboski wrote:

>>>>>>

>>>>>>> I am currently trying to write a batch file that will delete a

>>>>>>> list

>>>>>>> of

>>>>>>> files from all of my network drives. The problem I am having is

>>>>>>> getting the network drives. I am on a rather large network, and

>>>>>>> I

>>>>>>> would like this to run on several different computers that may

>>>>>>> be

>>>>>>> connected to different drives.

>>>>>

>>>>> I have been meaning to ask advice or figure the following out

>>>>> myself

>>>>> so I will just post my solution and describe where it has

>>>>> problems.

>>>>>

>>>>> The following code WORKS on Vista, but not on 2003, nor on

>>>>> XP if I recall the latter correctly.

>>>>>

>>>>> Following is all one line (in a batch file):

>>>>>

>>>>> @for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do

>>>>> @for %%A in (%%b %%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 @fsutil fsinfo

>>>>> drivetype %%A

>>>>>

>>>>>

>>>>> =======================

>>>>> Ugly but it works on Vista like this:

>>>>>

>>>>> A: - Remote/Network Drive

>>>>> C: - Fixed Drive

>>>>> D: - Fixed Drive

>>>>> E: - Fixed Drive

>>>>> F: - CD-ROM Drive

>>>>> G: - CD-ROM Drive

>>>>> H: - CD-ROM Drive

>>>>> J: - Remote/Network Drive

>>>>> O: - Remote/Network Drive

>>>>> P: - Remote/Network Drive

>>>>> Q: - Remote/Network Drive

>>>>> R: - CD-ROM Drive

>>>>> S: - Remote/Network Drive

>>>>> T: - Remote/Network Drive

>>>>> U: - Remote/Network Drive

>>>>> W: - Remote/Network Drive

>>>>> X: - Remote/Network Drive

>>>>> Y: - Remote/Network Drive

>>>>> Z: - Remote/Network Drive

>>>>>

>>>>>

>>>>>

>>>>

>>>>

>>>>

>>>

>>>

>>

>>

>

>

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:OMizjFqxIHA.2384@TK2MSFTNGP02.phx.gbl...

> Sadly, that still doesn't work under Vista ... the one-liner I posted

> earlier seems to work across the board ... or perhaps I missed

> something? -->

>

> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c

> type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil fsinfo

> drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

 

Sorry, I didn't repost my Vista version in that last messages but

had done so elsewhere this thread. It had been working all along.

 

@for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do @for %%A

in (%%b %%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 @fsutil fsinfo drivetype %%A

 

I have been using this for about a year on Vista.

 

No temp files.

 

I just use an OS check to decide which of the two to use,

as I prefer that to temp files and the (highly technical) issue

with more etc.

> --

> Dean Wells [MVP / Directory Services]

> MSEtechnology

> [[ Please respond to the Newsgroup only regarding posts ]]

> R e m o v e t h e m a s k t o s e n d e m a i l

>

>

> "Herb Martin" <news@learnquick.com> wrote in message

> news:Ogx61KpxIHA.1980@TK2MSFTNGP02.phx.gbl...

>>

>> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

>> news:eQRnffoxIHA.1768@TK2MSFTNGP03.phx.gbl...

>>> Nod, I thought of the same thing re: the letter-depth but figured it's

>>> so nigh-on moot for the same reasons ...

>>

>> That's why I did like the pipe to find "\".

>>

>> Here's the current one that doesn't mess up with "Drives:"

>> on XP (I hadn't notice the error until Esra pointed that

>> out (I was testing under 2003 mostly and who would have

>> thought that XP and 2003 which both WORK basicly

>> would be different in a new way?)

>>

>> [Following is all one line for a batch file]

>>

>> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

>> "%%a"=="Drives:" fsutil fsinfo drivetype %%a

>>

>>

>> I didn't use "For" option SKIP=1 because it would be different

>> for XP vs. 2003.

>>

>>> --

>>> Dean Wells [MVP / Directory Services]

>>> MSEtechnology

>>> [[ Please respond to the Newsgroup only regarding posts ]]

>>> R e m o v e t h e m a s k t o s e n d e m a i l

>>>

>>>

>>> "Herb Martin" <news@learnquick.com> wrote in message

>>> news:eW$cX6nxIHA.4492@TK2MSFTNGP02.phx.gbl...

>>>>

>>>> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

>>>> news:%23j5g1TkxIHA.1772@TK2MSFTNGP03.phx.gbl...

>>>>> It's always strange to me just how much pleasure I seem to derive from

>>>>> working in this (let's face it) old & crappy little shell ... but,

>>>>> seemingly like the rest of you, I'm quite happy doing so and will

>>>>> readily jump on the 'let's see how many alternatives there are'

>>>>> band-wagon whilst striving for the apparent golden-egg of batch

>>>>> syntax: that ever elusive 'let's make it a one-liner.' Anyway, I came

>>>>> up with this improvement on my original syntax, it too limits the

>>>>> number of iterations resulting from the for loop to only those

>>>>> necessary (note that it's a one-liner; well, sorta) -

>>>>>

>>>>> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c

>>>>> type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil

>>>>> fsinfo drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

>>>>

>>>> Cool. I never did understand (or really isolate) your Unicode trick

>>>> from that big batch file -- the one to remove the NULLS.

>>>>

>>>> I ended up using a pipe to find on XP -- after using more as the

>>>> next best thing but admitting that more will fail (or at least ask for

>>>> key to continue) if there are more drives than screen lines.)

>>>>

>>>> This last isn't a giant deal as I keep my screen MUCH bigger than

>>>> the maximum (?) 26 drive letters but not everyone does all of the

>>>> time.

>>>>

>>>>

>>>>> "Herb Martin" <news@learnquick.com> wrote in message

>>>>> news:OSAywudxIHA.2208@TK2MSFTNGP04.phx.gbl...

>>>>>>

>>>>>> "Bob I" <birelan@yahoo.com> wrote in message

>>>>>> news:er75LzXxIHA.5472@TK2MSFTNGP06.phx.gbl...

>>>>>>> See "net use" and "If exist" in Windows Help and support. Also there

>>>>>>> is a cmd prompt group that has some pretty sharp folks(cross posting

>>>>>>> this)

>>>>>>>

>>>>>>> http://news://msnews.microsoft.com/microsoft.public.win2000.cmdprompt.admin

>>>>>>>

>>>>>>> joshboski wrote:

>>>>>>>

>>>>>>>> I am currently trying to write a batch file that will delete a list

>>>>>>>> of

>>>>>>>> files from all of my network drives. The problem I am having is

>>>>>>>> getting the network drives. I am on a rather large network, and I

>>>>>>>> would like this to run on several different computers that may be

>>>>>>>> connected to different drives.

>>>>>>

>>>>>> I have been meaning to ask advice or figure the following out myself

>>>>>> so I will just post my solution and describe where it has problems.

>>>>>>

>>>>>> The following code WORKS on Vista, but not on 2003, nor on

>>>>>> XP if I recall the latter correctly.

>>>>>>

>>>>>> Following is all one line (in a batch file):

>>>>>>

>>>>>> @for /f "tokens=1-26 delims=\ " %%a in ('fsutil fsinfo drives') do

>>>>>> @for %%A in (%%b %%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 @fsutil fsinfo

>>>>>> drivetype %%A

>>>>>>

>>>>>>

>>>>>> =======================

>>>>>> Ugly but it works on Vista like this:

>>>>>>

>>>>>> A: - Remote/Network Drive

>>>>>> C: - Fixed Drive

>>>>>> D: - Fixed Drive

>>>>>> E: - Fixed Drive

>>>>>> F: - CD-ROM Drive

>>>>>> G: - CD-ROM Drive

>>>>>> H: - CD-ROM Drive

>>>>>> J: - Remote/Network Drive

>>>>>> O: - Remote/Network Drive

>>>>>> P: - Remote/Network Drive

>>>>>> Q: - Remote/Network Drive

>>>>>> R: - CD-ROM Drive

>>>>>> S: - Remote/Network Drive

>>>>>> T: - Remote/Network Drive

>>>>>> U: - Remote/Network Drive

>>>>>> W: - Remote/Network Drive

>>>>>> X: - Remote/Network Drive

>>>>>> Y: - Remote/Network Drive

>>>>>> Z: - Remote/Network Drive

>>>>>>

>>>>>>

>>>>>>

>>>>>

>>>>>

>>>>>

>>>>

>>>>

>>>

>>>

>>

>>

>

>

Guest Harlan Grove
Posted

Re: Batch file to show Network drives

 

"Herb Martin" <n...@learnquick.com> wrote...

>The following works on 2003 and Vista but is really slow (at least

>on 2003) when it encounters a disconnected network drive letter that *IS*

>mapped:

>

>ALL ONE LINE FOLLOWING:

>

>for %%a in (A B 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:\lpt1 @fsutil fsinfo drivetype %%a:

....

 

The following seems to work under XP. Also all one command line.

 

(for %d in (A B 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 ^

@fsutil fsinfo drivetype %d:) | find "No such " /v

 

This produces the following results, not including the lines of

dashes.

 

------

B: - Remote/Network Drive

C: - Fixed Drive

D: - Fixed Drive

F: - Remote/Network Drive

G: - CD-ROM Drive

H: - Remote/Network Drive

I: - Remote/Network Drive

J: - Remote/Network Drive

K: - Remote/Network Drive

L: - Remote/Network Drive

M: - Remote/Network Drive

P: - Remote/Network Drive

S: - Remote/Network Drive

T: - Remote/Network Drive

U: - Remote/Network Drive

V: - Remote/Network Drive

W: - Remote/Network Drive

X: - Remote/Network Drive

------

 

Maybe not elegant, but there are times brute force is expedient.

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Harlan Grove" <hrlngrv@gmail.com> wrote in message

news:0224e300-0337-4973-bb9e-aeac07c09e29@p39g2000prm.googlegroups.com...

> "Herb Martin" <n...@learnquick.com> wrote...

>>The following works on 2003 and Vista but is really slow (at least

>>on 2003) when it encounters a disconnected network drive letter that *IS*

>>mapped:

>>

>>ALL ONE LINE FOLLOWING:

>>

>>for %%a in (A B 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:\lpt1 @fsutil fsinfo drivetype %%a:

> ...

>

> The following seems to work under XP. Also all one command line.

>

> (for %d in (A B 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 ^

> @fsutil fsinfo drivetype %d:) | find "No such " /v

 

My experience is that it is much slower to check invalid

drive letters than to just check those that (FSUtil says) exist,

but that doesn't seem to be the case with this command you

offer.

 

It works on (at least) XP, 2003, and Vista so I think yours is

the best I have seen so far, and I am sorry I didn't try going

right at all the drives to start with. <GRIN>

 

I guess it turns out that the "Fsutil fsinfo drives" is just a waste of

time and effort (programmer and computer).

 

 

Thanks

 

> This produces the following results, not including the lines of

> dashes.

>

> ------

> B: - Remote/Network Drive

> C: - Fixed Drive

> D: - Fixed Drive

> F: - Remote/Network Drive

> G: - CD-ROM Drive

> H: - Remote/Network Drive

> I: - Remote/Network Drive

> J: - Remote/Network Drive

> K: - Remote/Network Drive

> L: - Remote/Network Drive

> M: - Remote/Network Drive

> P: - Remote/Network Drive

> S: - Remote/Network Drive

> T: - Remote/Network Drive

> U: - Remote/Network Drive

> V: - Remote/Network Drive

> W: - Remote/Network Drive

> X: - Remote/Network Drive

> ------

>

> Maybe not elegant, but there are times brute force is expedient.

Guest Esra Sdrawkcab
Posted

Re: Batch file to show Network drives

 

Herb Martin wrote:

> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

> news:eQRnffoxIHA.1768@TK2MSFTNGP03.phx.gbl...

>> Nod, I thought of the same thing re: the letter-depth but figured it's so

>> nigh-on moot for the same reasons ...

>

> That's why I did like the pipe to find "\".

>

> Here's the current one that doesn't mess up with "Drives:"

> on XP (I hadn't notice the error until Esra pointed that

> out (I was testing under 2003 mostly and who would have

> thought that XP and 2003 which both WORK basicly

> would be different in a new way?)

>

> [Following is all one line for a batch file]

>

> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

> "%%a"=="Drives:" fsutil fsinfo drivetype %%a

>

>

> I didn't use "For" option SKIP=1 because it would be different

> for XP vs. 2003.

>

 

Sure that skips the text "Drives:" but it doesn't pick up my floppy

drive letter

 

C:\WINDOWS>qdrvc

C:\ - Fixed Drive

D:\ - Fixed Drive

E:\ - Fixed Drive

Q:\ - CD-ROM Drive

 

C:\WINDOWS>fsutil fsinfo drives

 

Drives: A:\ C:\ D:\ E:\ Q:\

 

C:\WINDOWS>

Guest Esra Sdrawkcab
Posted

Re: Batch file to show Network drives

 

Dean Wells (MVP) wrote:

> Sadly, that still doesn't work under Vista ... the one-liner I posted

> earlier seems to work across the board ... or perhaps I missed

> something? -->

>

> fsutil fsinfo drives >"%TEMP%\%~n0.$$$" && for /f %%d in ('cmd /u /c

> type "%TEMP%\%~n0.$$$" ^| more +11 ^| findstr "[A-Z]"') do fsutil fsinfo

> drivetype %%d: & del "%TEMP%\%~n0.$$$" 2>nul

>

Yup that works here (XP Pro). I guess we were hoping for a

shorter/tidier solution.

Guest Esra Sdrawkcab
Posted

Re: Batch file to show Network drives

 

Harlan Grove wrote:

> "Herb Martin" <n...@learnquick.com> wrote...

>> The following works on 2003 and Vista but is really slow (at least

>> on 2003) when it encounters a disconnected network drive letter that *IS*

>> mapped:

>>

>> ALL ONE LINE FOLLOWING:

>>

>> for %%a in (A B 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:\lpt1 @fsutil fsinfo drivetype %%a:

> ...

>

> The following seems to work under XP. Also all one command line.

>

> (for %d in (A B 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 ^

> @fsutil fsinfo drivetype %d:) | find "No such " /v

>

> This produces the following results, not including the lines of

> dashes.

>

> ------

> B: - Remote/Network Drive

> C: - Fixed Drive

> D: - Fixed Drive

> F: - Remote/Network Drive

> G: - CD-ROM Drive

> H: - Remote/Network Drive

> I: - Remote/Network Drive

> J: - Remote/Network Drive

> K: - Remote/Network Drive

> L: - Remote/Network Drive

> M: - Remote/Network Drive

> P: - Remote/Network Drive

> S: - Remote/Network Drive

> T: - Remote/Network Drive

> U: - Remote/Network Drive

> V: - Remote/Network Drive

> W: - Remote/Network Drive

> X: - Remote/Network Drive

> ------

>

> Maybe not elegant, but there are times brute force is expedient.

Yes, Ok here.

 

C:\WINDOWS>(for %d in (A B 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 @

fsutil fsinfo drivetype %d: ) | find "No such " /v

A: - Removable Drive

C: - Fixed Drive

D: - Fixed Drive

E: - Fixed Drive

Q: - CD-ROM Drive

 

C:\WINDOWS>

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Esra Sdrawkcab" <admin@127.0.0.1> wrote in message

news:4DM1k.3516$E41.2765@text.news.virginmedia.com...

> Herb Martin wrote:

>> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

>> news:eQRnffoxIHA.1768@TK2MSFTNGP03.phx.gbl...

>>> Nod, I thought of the same thing re: the letter-depth but figured it's

>>> so nigh-on moot for the same reasons ...

>>

>> That's why I did like the pipe to find "\".

>>

>> Here's the current one that doesn't mess up with "Drives:"

>> on XP (I hadn't notice the error until Esra pointed that

>> out (I was testing under 2003 mostly and who would have

>> thought that XP and 2003 which both WORK basicly

>> would be different in a new way?)

>>

>> [Following is all one line for a batch file]

>>

>> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

>> "%%a"=="Drives:" fsutil fsinfo drivetype %%a

>>

>>

>> I didn't use "For" option SKIP=1 because it would be different

>> for XP vs. 2003.

>>

>

> Sure that skips the text "Drives:" but it doesn't pick up my floppy drive

> letter

 

 

Harlan's works best (likely even for that A:) and it is pretty much the

simplest (not QUITE elegant but it beats mine) and uses no weird

tricks, external utilities, nor temp files.

 

It works as is on (at least) XP, 2003, and Vista:

 

[All one line for batch file:]

@(for %%d in (A B 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

@fsutil fsinfo drivetype %%d:) | @find "No such " /v

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

Sadly, that too seems to fail on Vista.

 

Herb, I may be missing something here but the later version of my

original syntax works across the board and, as I mentioned earlier,

iterates through only those drive assignments that already exist. Are

you adverse to that particular syntax? Perhaps because it uses a TEMP

file per your earlier 'best-practices'?

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

 

 

"Herb Martin" <news@learnquick.com> wrote in message

news:%23S5CtusxIHA.1980@TK2MSFTNGP02.phx.gbl...

>

> "Harlan Grove" <hrlngrv@gmail.com> wrote in message

> news:0224e300-0337-4973-bb9e-aeac07c09e29@p39g2000prm.googlegroups.com...

>> "Herb Martin" <n...@learnquick.com> wrote...

>>>The following works on 2003 and Vista but is really slow (at least

>>>on 2003) when it encounters a disconnected network drive letter that

>>>*IS*

>>>mapped:

>>>

>>>ALL ONE LINE FOLLOWING:

>>>

>>>for %%a in (A B 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:\lpt1 @fsutil fsinfo drivetype %%a:

>> ...

>>

>> The following seems to work under XP. Also all one command line.

>>

>> (for %d in (A B 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 ^

>> @fsutil fsinfo drivetype %d:) | find "No such " /v

>

> My experience is that it is much slower to check invalid

> drive letters than to just check those that (FSUtil says) exist,

> but that doesn't seem to be the case with this command you

> offer.

>

> It works on (at least) XP, 2003, and Vista so I think yours is

> the best I have seen so far, and I am sorry I didn't try going

> right at all the drives to start with. <GRIN>

>

> I guess it turns out that the "Fsutil fsinfo drives" is just a waste

> of

> time and effort (programmer and computer).

>

>

> Thanks

>

>

>> This produces the following results, not including the lines of

>> dashes.

>>

>> ------

>> B: - Remote/Network Drive

>> C: - Fixed Drive

>> D: - Fixed Drive

>> F: - Remote/Network Drive

>> G: - CD-ROM Drive

>> H: - Remote/Network Drive

>> I: - Remote/Network Drive

>> J: - Remote/Network Drive

>> K: - Remote/Network Drive

>> L: - Remote/Network Drive

>> M: - Remote/Network Drive

>> P: - Remote/Network Drive

>> S: - Remote/Network Drive

>> T: - Remote/Network Drive

>> U: - Remote/Network Drive

>> V: - Remote/Network Drive

>> W: - Remote/Network Drive

>> X: - Remote/Network Drive

>> ------

>>

>> Maybe not elegant, but there are times brute force is expedient.

>

>

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

Correct, a mis-paste on my part; that does work on Vista.

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:%23lrP1lwxIHA.1504@TK2MSFTNGP05.phx.gbl...

> Sadly, that too seems to fail on Vista.

>

> Herb, I may be missing something here but the later version of my

> original syntax works across the board and, as I mentioned earlier,

> iterates through only those drive assignments that already exist. Are

> you adverse to that particular syntax? Perhaps because it uses a TEMP

> file per your earlier 'best-practices'?

>

> --

> Dean Wells [MVP / Directory Services]

> MSEtechnology

> [[ Please respond to the Newsgroup only regarding posts ]]

> R e m o v e t h e m a s k t o s e n d e m a i l

>

>

> "Herb Martin" <news@learnquick.com> wrote in message

> news:%23S5CtusxIHA.1980@TK2MSFTNGP02.phx.gbl...

>>

>> "Harlan Grove" <hrlngrv@gmail.com> wrote in message

>> news:0224e300-0337-4973-bb9e-aeac07c09e29@p39g2000prm.googlegroups.com...

>>> "Herb Martin" <n...@learnquick.com> wrote...

>>>>The following works on 2003 and Vista but is really slow (at least

>>>>on 2003) when it encounters a disconnected network drive letter that

>>>>*IS*

>>>>mapped:

>>>>

>>>>ALL ONE LINE FOLLOWING:

>>>>

>>>>for %%a in (A B 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:\lpt1 @fsutil fsinfo drivetype %%a:

>>> ...

>>>

>>> The following seems to work under XP. Also all one command line.

>>>

>>> (for %d in (A B 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

>>> ^

>>> @fsutil fsinfo drivetype %d:) | find "No such " /v

>>

>> My experience is that it is much slower to check invalid

>> drive letters than to just check those that (FSUtil says) exist,

>> but that doesn't seem to be the case with this command you

>> offer.

>>

>> It works on (at least) XP, 2003, and Vista so I think yours is

>> the best I have seen so far, and I am sorry I didn't try going

>> right at all the drives to start with. <GRIN>

>>

>> I guess it turns out that the "Fsutil fsinfo drives" is just a waste

>> of

>> time and effort (programmer and computer).

>>

>>

>> Thanks

>>

>>

>>> This produces the following results, not including the lines of

>>> dashes.

>>>

>>> ------

>>> B: - Remote/Network Drive

>>> C: - Fixed Drive

>>> D: - Fixed Drive

>>> F: - Remote/Network Drive

>>> G: - CD-ROM Drive

>>> H: - Remote/Network Drive

>>> I: - Remote/Network Drive

>>> J: - Remote/Network Drive

>>> K: - Remote/Network Drive

>>> L: - Remote/Network Drive

>>> M: - Remote/Network Drive

>>> P: - Remote/Network Drive

>>> S: - Remote/Network Drive

>>> T: - Remote/Network Drive

>>> U: - Remote/Network Drive

>>> V: - Remote/Network Drive

>>> W: - Remote/Network Drive

>>> X: - Remote/Network Drive

>>> ------

>>>

>>> Maybe not elegant, but there are times brute force is expedient.

>>

>>

>

>

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

"Herb Martin" <news@learnquick.com> wrote in message

news:%235P3BjuxIHA.1936@TK2MSFTNGP04.phx.gbl...

>

> "Esra Sdrawkcab" <admin@127.0.0.1> wrote in message

> news:4DM1k.3516$E41.2765@text.news.virginmedia.com...

>> Herb Martin wrote:

>>> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

>>> news:eQRnffoxIHA.1768@TK2MSFTNGP03.phx.gbl...

>>>> Nod, I thought of the same thing re: the letter-depth but figured

>>>> it's so nigh-on moot for the same reasons ...

>>>

>>> That's why I did like the pipe to find "\".

>>>

>>> Here's the current one that doesn't mess up with "Drives:"

>>> on XP (I hadn't notice the error until Esra pointed that

>>> out (I was testing under 2003 mostly and who would have

>>> thought that XP and 2003 which both WORK basicly

>>> would be different in a new way?)

>>>

>>> [Following is all one line for a batch file]

>>>

>>> @for /f %%a in ('fsutil fsinfo drives ^| find "\"') do @if not

>>> "%%a"=="Drives:" fsutil fsinfo drivetype %%a

>>>

>>>

>>> I didn't use "For" option SKIP=1 because it would be different

>>> for XP vs. 2003.

>>>

>>

>> Sure that skips the text "Drives:" but it doesn't pick up my floppy

>> drive letter

>

>

> Harlan's works best (likely even for that A:) and it is pretty much

> the

> simplest (not QUITE elegant but it beats mine) and uses no weird

> tricks, external utilities, nor temp files.

>

> It works as is on (at least) XP, 2003, and Vista:

>

> [All one line for batch file:]

> @(for %%d in (A B 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

> @fsutil fsinfo drivetype %%d:) | @find "No such " /v

>

>

>

>

 

 

Hehe ... if I didn't exploit the specific behaviors that go beyond a

command's original purpose ('trick' seems so negative), I'd unacceptably

limit the scope of what a batch file can do for me. Take this simple

example -- the ability to echo out text and hold the cursor at the end

of the line rather than be subject to the implicit CRLF ... that's an

odd use of a set statement for sure but is commonplace because it's

necessary. Keeping some of the best-practices you mentioned in mind, my

feeling is that the unbelievably severe limitations of this aging shell

we seem to sooo love make it necessary to exploit any and all

predictable/consistent behaviors.

 

I agree entirely on using only core binaries unless absolutely no other

solution exists but I'm only adverse to the use of TEMP files to the

point of it not compromising the script's ability to do what it does in

the best way possible. My avoidance of TEMP files is motivated only by

the need to clean them up and the additional code required to do so;

nothing more. Let's face it -- when was the last time a problem

occurred because of a TEMP file that wasn't attributed to poor syntax (I

can't recollect even one) -- if the creation of the TEMP file failed for

any other reason, the effect on the script is probably a much lesser

concern than its root cause.

 

In this particular case, my feeling is that avoiding the use of TEMP

files at the expense of checking types for drive assignments that don't

even exist is, to my mind, an example of such a compromise ... but

that's just me and, of course, I like my syntax better :0)

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

Sheesh ... that's 'sposed to say 'correction' ... man, this could go on

forever ...

 

<double-checking> ...

<checking again> ...

<submit>

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:%23u1uynwxIHA.1036@TK2MSFTNGP04.phx.gbl...

> Correct, a mis-paste on my part; that does work on Vista.

>

> --

> Dean Wells [MVP / Directory Services]

> MSEtechnology

> [[ Please respond to the Newsgroup only regarding posts ]]

> R e m o v e t h e m a s k t o s e n d e m a i l

>

>

> "Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

> news:%23lrP1lwxIHA.1504@TK2MSFTNGP05.phx.gbl...

>> Sadly, that too seems to fail on Vista.

>>

>> Herb, I may be missing something here but the later version of my

>> original syntax works across the board and, as I mentioned earlier,

>> iterates through only those drive assignments that already exist.

>> Are you adverse to that particular syntax? Perhaps because it uses a

>> TEMP file per your earlier 'best-practices'?

>>

>> --

>> Dean Wells [MVP / Directory Services]

>> MSEtechnology

>> [[ Please respond to the Newsgroup only regarding posts ]]

>> R e m o v e t h e m a s k t o s e n d e m a i l

>>

>>

>> "Herb Martin" <news@learnquick.com> wrote in message

>> news:%23S5CtusxIHA.1980@TK2MSFTNGP02.phx.gbl...

>>>

>>> "Harlan Grove" <hrlngrv@gmail.com> wrote in message

>>> news:0224e300-0337-4973-bb9e-aeac07c09e29@p39g2000prm.googlegroups.com...

>>>> "Herb Martin" <n...@learnquick.com> wrote...

>>>>>The following works on 2003 and Vista but is really slow (at least

>>>>>on 2003) when it encounters a disconnected network drive letter

>>>>>that *IS*

>>>>>mapped:

>>>>>

>>>>>ALL ONE LINE FOLLOWING:

>>>>>

>>>>>for %%a in (A B 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:\lpt1 @fsutil fsinfo drivetype %%a:

>>>> ...

>>>>

>>>> The following seems to work under XP. Also all one command line.

>>>>

>>>> (for %d in (A B 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

>>>> ^

>>>> @fsutil fsinfo drivetype %d:) | find "No such " /v

>>>

>>> My experience is that it is much slower to check invalid

>>> drive letters than to just check those that (FSUtil says) exist,

>>> but that doesn't seem to be the case with this command you

>>> offer.

>>>

>>> It works on (at least) XP, 2003, and Vista so I think yours is

>>> the best I have seen so far, and I am sorry I didn't try going

>>> right at all the drives to start with. <GRIN>

>>>

>>> I guess it turns out that the "Fsutil fsinfo drives" is just a waste

>>> of

>>> time and effort (programmer and computer).

>>>

>>>

>>> Thanks

>>>

>>>

>>>> This produces the following results, not including the lines of

>>>> dashes.

>>>>

>>>> ------

>>>> B: - Remote/Network Drive

>>>> C: - Fixed Drive

>>>> D: - Fixed Drive

>>>> F: - Remote/Network Drive

>>>> G: - CD-ROM Drive

>>>> H: - Remote/Network Drive

>>>> I: - Remote/Network Drive

>>>> J: - Remote/Network Drive

>>>> K: - Remote/Network Drive

>>>> L: - Remote/Network Drive

>>>> M: - Remote/Network Drive

>>>> P: - Remote/Network Drive

>>>> S: - Remote/Network Drive

>>>> T: - Remote/Network Drive

>>>> U: - Remote/Network Drive

>>>> V: - Remote/Network Drive

>>>> W: - Remote/Network Drive

>>>> X: - Remote/Network Drive

>>>> ------

>>>>

>>>> Maybe not elegant, but there are times brute force is expedient.

>>>

>>>

>>

>>

>

>

Guest Harlan Grove
Posted

Re: Batch file to show Network drives

 

"Dean Wells \(MVP\)" <dwe...@maskmsetechnology.com> wrote...

....

>I agree entirely on using only core binaries unless absolutely no other

>solution exists but I'm only adverse to the use of TEMP files to the

>point of it not compromising the script's ability to do what it does in

>the best way possible. My avoidance of TEMP files is motivated only by

>the need to clean them up and the additional code required to do so;

....

 

Raises a few questions.

 

1. May cscript now be considered a core utility?

2. How about scripted use of debug?

3. Does a vanilla Vista install include the 16-bit DEBUG.COM?

4. What's the concern about temp files? All it takes is something like

 

set tf="%TEMP%\%~0.tmp"

somecommand > %tf%

:

del %tf%

 

so a set command and a delete command. Not exactly huge, unwieldy

overhead.

Guest Dean Wells \(MVP\)
Posted

Re: Batch file to show Network drives

 

"Harlan Grove" <hrlngrv@gmail.com> wrote in message

news:153e1999-68c7-46fb-a3b7-8cb2a84ad9ee@w5g2000prd.googlegroups.com...

> "Dean Wells \(MVP\)" <dwe...@maskmsetechnology.com> wrote...

> ...

>>I agree entirely on using only core binaries unless absolutely no

>>other

>>solution exists but I'm only adverse to the use of TEMP files to the

>>point of it not compromising the script's ability to do what it does

>>in

>>the best way possible. My avoidance of TEMP files is motivated only

>>by

>>the need to clean them up and the additional code required to do so;

> ...

>

> Raises a few questions.

>

> 1. May cscript now be considered a core utility?

> 2. How about scripted use of debug?

> 3. Does a vanilla Vista install include the 16-bit DEBUG.COM?

> 4. What's the concern about temp files? All it takes is something like

>

> set tf="%TEMP%\%~0.tmp"

> somecommand > %tf%

> :

> del %tf%

>

> so a set command and a delete command. Not exactly huge, unwieldy

> overhead.

 

 

I'm not sure who you're posing your questions to since my comments were

in response to Herb's list of best-practices but I'm happy to throw in

my opinion ... solicited or otherwise :0) -

 

1. Yes ... but Vista brings its own concerns to the table.

2. Of course.

3. Yes ... <begin paste>

 

C:\>ver

 

Microsoft Windows [Version 6.0.6001]

 

C:\>debug

-

 

</paste>

 

4. Temp files don't particularly concern me, and certainly not to the

point where I'd hesitate using them. I am, however, always conscious of

the complications they introduce but, in many cases, such complications

simply cannot be avoided or they're tolerable (relatively speaking.)

For example, if the script is executed _twice_ (whether deliberately or

inadvertently), logic issues may result since the script may branch

incorrectly based on the content of the TEMP file which is now

out-of-state since the second instance polluted it. Of course, there

are even ways around that with additional logic but ... well, you can

fill in the rest. Anyways, I'll happily volunteer that I'm describing

edge-cases here so I'll shut-up on that topic and close with -- I use

TEMP files almost across the board because, IMO, to not use them

unnecessarily limits functionality.

 

--

Dean Wells [MVP / Directory Services]

MSEtechnology

[[ Please respond to the Newsgroup only regarding posts ]]

R e m o v e t h e m a s k t o s e n d e m a i l

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:OEXHR2wxIHA.4500@TK2MSFTNGP04.phx.gbl...

> Sheesh ... that's 'sposed to say 'correction' ... man, this could go on

> forever ...

>

> <double-checking> ...

> <checking again> ...

> <submit>

 

 

No problem. Below is the part of the message I was

going to send you before you re-replied that you had

it working <grin>

 

Don't worry about it. Like you this stuff intrigues me...

 

I do like Harlan's best: works on all OSes without any

temp files etc. -- I would only like it better if that pipe

to find could be removed <grin>

 

I tested Harlan's on:

Microsoftr Windows VistaT Ultimate

6.0.6001 Service Pack 1 Build 6001

 

(@for %%d in (A B 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

@fsutil fsinfo drivetype %%d:) | @find "No such " /v

 

 

That is the actual (single) line cut from my current batch file as

I switched to his version -- slightly modified by @ signs.

 

This same line worked on:

 

Microsoft® Windows® Server 2003, Enterprise Edition

5.2.3790 Service Pack 2 Build 3790

 

Microsoft Windows XP Professional

5.1.2600 Service Pack 2 Build 2600

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Harlan Grove" <hrlngrv@gmail.com> wrote in message

news:153e1999-68c7-46fb-a3b7-8cb2a84ad9ee@w5g2000prd.googlegroups.com...

> "Dean Wells \(MVP\)" <dwe...@maskmsetechnology.com> wrote...

> ...

>>I agree entirely on using only core binaries unless absolutely no other

>>solution exists but I'm only adverse to the use of TEMP files to the

>>point of it not compromising the script's ability to do what it does in

>>the best way possible. My avoidance of TEMP files is motivated only by

>>the need to clean them up and the additional code required to do so;

 

I really agree with everything Dean wrote above and in the previous

message except to DEGREE, where I will try a bit harder to avoid

temps. Sets that are complicated only to a small degree.

 

The only reason I posted "my" preferences was not to say they were

necessarily best practices, but to make explicit my own prejudices

and offer them to anyone who did think they were a good idea (some

are like avoiding "add-on" utilities whenever practical.)

> Raises a few questions.

>

> 1. May cscript now be considered a core utility?

 

It's on all modern machines so logically the answer is "Yes", but for

me the answer remains "No", since I don't like VBScript and once

I must make that break I tend to go "all the way to Perl."

 

Perl is on all of my machines. I am partly responsible for getting

Perl added to the (3.51) Resource Kit and am only sorry that

we didn't get it into the product (almost but the CD-ROM/Build

was already locked for changes by that time.)

> 2. How about scripted use of debug?

 

Probably about the same (for me) -- I use to use that back in DOS

days when I didn't always have Perl. One issue with this is that it

changes the Command Prompt size and thus induces a disconcerting

visual effect as it runs and quits.

 

Truthfully I thought it was gone. <grin>

 

Exactly the same for EdLin.

> 3. Does a vanilla Vista install include the 16-bit DEBUG.COM?

 

Apparently. Mine does.

 

And I found the other night that it also has EdLin.

 

I was actually considering using EdLin at one point for THIS problem.

> 4. What's the concern about temp files? All it takes is something like

>

> set tf="%TEMP%\%~0.tmp"

> somecommand > %tf%

> :

> del %tf%

>

> so a set command and a delete command. Not exactly huge, unwieldy

> overhead.

 

You may consider it mere prejudice on my part. I don't like possible

race considitions with the same file name in mupliple windows, trying to

come up with unique names, clean up if the batch file is aborted, etc

 

The pseudo environment variable %Random% can (help) solve this at

the expense of more complication....

 

BTW: I am not a fan (so far) of PowerShell either. (To little, too late,

too slow [to start], not ubiquitous [yet], too awkward.)

Guest Herb Martin
Posted

Re: Batch file to show Network drives

 

 

"Dean Wells (MVP)" <dwells@maskmsetechnology.com> wrote in message

news:u9%23kh5yxIHA.3384@TK2MSFTNGP03.phx.gbl...

> "Harlan Grove" <hrlngrv@gmail.com> wrote in message

> news:153e1999-68c7-46fb-a3b7-8cb2a84ad9ee@w5g2000prd.googlegroups.com...

>> "Dean Wells \(MVP\)" <dwe...@maskmsetechnology.com> wrote...

>> ...

>>>I agree entirely on using only core binaries unless absolutely no other

>>>solution exists but I'm only adverse to the use of TEMP files to the

>>>point of it not compromising the script's ability to do what it does in

>>>the best way possible. My avoidance of TEMP files is motivated only by

>>>the need to clean them up and the additional code required to do so;

>> ...

>>

>> Raises a few questions.

>>

>> 1. May cscript now be considered a core utility?

>> 2. How about scripted use of debug?

>> 3. Does a vanilla Vista install include the 16-bit DEBUG.COM?

>> 4. What's the concern about temp files? All it takes is something like

 

> I'm not sure who you're posing your questions to since my comments were in

> response to Herb's list of best-practices but I'm happy to throw in my

> opinion ... solicited or otherwise :0) -

 

Calling my own idiosyncratic list "best-practices" is going much further

than

necessary Dean. <grin>

 

They are just my practices, some of them perhaps good but nowhere

near "best". <big grin>

>> 1. May cscript now be considered a core utility?

>> 2. How about scripted use of debug?

>> 3. Does a vanilla Vista install include the 16-bit DEBUG.COM?

>> 4. What's the concern about temp files? All it takes is something like

> 1. Yes ... but Vista brings its own concerns to the table.

> 2. Of course.

> 3. Yes ... <begin paste>

 

For instance, I agreed with you about CScript but mentioned that I

just don't like it and will go all the way to Perl if CScript proves

necessary.

 

Exception: If someone gives me a working script which uses CScript

then perhaps I would just use it -- feeling no compulsion to rewrite it.

 

Microsoft could easiy have added Perl, awk, sed, grep, back in

NT 3.51 and this would all be so much easier.


×
×
  • Create New...