[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理从fsutil fsinfo drives得到想要的盘符字符串

  1. fsutil fsinfo drives
复制代码
执行后显示
  1. 驱动器: C:\ D:\ E:\
复制代码
如果从中得到以下结果呢
  1. C: D: E:
复制代码

[ 本帖最后由 jackerloo2009 于 2009-5-20 13:55 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2
学海无涯

看for /?中关于/f的

TOP

@echo off
setlocal enabledelayedexpansion
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v " "') do (
    set var=%%i
    set drive=!var:~-2!
    echo !drive!
)   

pause>nul

TOP

回复 3楼 的帖子

不知道为什么用你的不能满足我的要求,但仍感谢你提供find的思路,只好自己琢磨了个代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=\" %%i in ('fsutil fsinfo drives ^| find /v "\\"') do (
  4.     set var=%%i
  5.     set "drives=!drives!!!var:~-2!! "
  6. )
  7. echo !drives!   
  8. pause>nul
复制代码
另外还有个问题就是只能用find吗,findstr可不可以?网上关于find和findstr的解释仍然很模糊

[ 本帖最后由 jackerloo2009 于 2009-5-20 10:31 编辑 ]
学海无涯

TOP

試了一下,樓上兩位的代碼都只能得到第一個分區阿,還有爲何要'fsutil fsinfo drives ^| find /v "\\"'或者'fsutil fsinfo drives^|find /v " "',這樣做,感覺沒有必要……
我覺得關鍵問題是,不知道到底可能有幾個驅動器,要是知道,就很簡單了,可是樓主的想法應該是可以自動識別出來,我是弄不出來了,等高手來解決一下

[ 本帖最后由 sniperhgy 于 2009-5-20 11:19 编辑 ]

TOP

回复 4楼 的帖子

你自己试试不就知道findstr是否了么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5楼 的帖子

“感觉没必要”?请亲自按照自己的想法来测试一下,看看结果跟感觉是否一致。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2009-5-20 12:48 发表
“感觉没必要”?请亲自按照自己的想法来测试一下,看看结果跟感觉是否一致。

'fsutil fsinfo drives ^| find /v "\\"' :這句話,是説用fsutil fsinfo drives得到的結果中,過濾掉包含\\的,樓主得到的結果中,哪裏有\\?
'fsutil fsinfo drives ^| find /v " "'  :同上,就是過濾包含" " 的,那麽看樓主得到的結果。裏面包含空格,一下子不就被過濾了?

TOP

回复 8楼 的帖子

你按照自己的思路写段代码出来给大家看看结果?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不好意思,我對於如何從不能確定特徵体個數的文本裏取得我想要的東西這個技巧還沒有掌握
樓主得到的結果是“驱动器: C:\ D:\ E:\ ”
我得到的結果是“ドライブ: C:\ D:\ E:\ F:\ H:\ I:\”
這裡面“\”的個數是不一樣的,對於這個問題,我還不能解決

TOP

回复 6楼 的帖子

不是我不测试,是没有完全理解find和findstr,所以无从测试
学海无涯

TOP

回复 8楼 的帖子

因为里面牵涉到了搜索一个特殊字符 \ 所以用了两个,换个方式应该也可以的
  1. 'fsutil fsinfo drives ^| find /v "^\"'
复制代码
学海无涯

TOP

回复 10楼 的帖子

这个跟 \  多少没有关系吧?
学海无涯

TOP

原帖由 jackerloo2009 于 2009-5-20 14:03 发表
因为里面牵涉到了搜索一个特殊字符 \ 所以用了两个,换个方式应该也可以的'fsutil fsinfo drives ^| find /v "^\"'


哦,這個自不必説,我的意思是
  1. fsutil fsinfo drives ^| find /v "^\"
复制代码


  1. fsutil fsinfo drives
复制代码

在結果上有區別沒有?貌似沒有區別阿

TOP

剛才又想了一下,寫出了一個
  1. for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives') do set var=%%b
  2. set "var=%var:\=%"
  3. echo %var%
复制代码

這個可以滿足樓主的需求

TOP

返回列表