找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 66444|回复: 29

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

[复制链接]
发表于 2009-5-19 19:04:01 | 显示全部楼层 |阅读模式
  1. fsutil fsinfo drives
复制代码
执行后显示
  1. 驱动器: C:\ D:\ E:\
复制代码
如果从中得到以下结果呢
  1. C: D: E:
复制代码

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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-5-19 19:08:35 | 显示全部楼层
看for /?中关于/f的
发表于 2009-5-19 19:15:23 | 显示全部楼层
@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
 楼主| 发表于 2009-5-20 09:39:33 | 显示全部楼层

回复 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 编辑 ]
发表于 2009-5-20 11:07:47 | 显示全部楼层
試了一下,樓上兩位的代碼都只能得到第一個分區阿,還有爲何要'fsutil fsinfo drives ^| find /v "\\"'或者'fsutil fsinfo drives^|find /v " "',這樣做,感覺沒有必要……
我覺得關鍵問題是,不知道到底可能有幾個驅動器,要是知道,就很簡單了,可是樓主的想法應該是可以自動識別出來,我是弄不出來了,等高手來解決一下

[ 本帖最后由 sniperhgy 于 2009-5-20 11:19 编辑 ]
发表于 2009-5-20 12:47:27 | 显示全部楼层

回复 4楼 的帖子

你自己试试不就知道findstr是否了么?
发表于 2009-5-20 12:48:12 | 显示全部楼层

回复 5楼 的帖子

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

'fsutil fsinfo drives ^| find /v "\\"' :這句話,是説用fsutil fsinfo drives得到的結果中,過濾掉包含\\的,樓主得到的結果中,哪裏有\\?
'fsutil fsinfo drives ^| find /v " "'  :同上,就是過濾包含" " 的,那麽看樓主得到的結果。裏面包含空格,一下子不就被過濾了?
发表于 2009-5-20 13:08:06 | 显示全部楼层

回复 8楼 的帖子

你按照自己的思路写段代码出来给大家看看结果?
发表于 2009-5-20 13:25:28 | 显示全部楼层
不好意思,我對於如何從不能確定特徵体個數的文本裏取得我想要的東西這個技巧還沒有掌握
樓主得到的結果是“驱动器: C:\ D:\ E:\ ”
我得到的結果是“ドライブ: C:\ D:\ E:\ F:\ H:\ I:\”
這裡面“\”的個數是不一樣的,對於這個問題,我還不能解決
 楼主| 发表于 2009-5-20 13:58:04 | 显示全部楼层

回复 6楼 的帖子

不是我不测试,是没有完全理解find和findstr,所以无从测试
 楼主| 发表于 2009-5-20 14:03:33 | 显示全部楼层

回复 8楼 的帖子

因为里面牵涉到了搜索一个特殊字符 \ 所以用了两个,换个方式应该也可以的
  1. 'fsutil fsinfo drives ^| find /v "^"'
复制代码
 楼主| 发表于 2009-5-20 14:10:06 | 显示全部楼层

回复 10楼 的帖子

这个跟 \  多少没有关系吧?
发表于 2009-5-20 14:10:08 | 显示全部楼层
原帖由 jackerloo2009 于 2009-5-20 14:03 发表
因为里面牵涉到了搜索一个特殊字符 \ 所以用了两个,换个方式应该也可以的'fsutil fsinfo drives ^| find /v "^\"'


哦,這個自不必説,我的意思是

  1. fsutil fsinfo drives ^| find /v "^"
复制代码



  1. fsutil fsinfo drives
复制代码

在結果上有區別沒有?貌似沒有區別阿
发表于 2009-5-20 14:38:41 | 显示全部楼层
剛才又想了一下,寫出了一個

  1. for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives') do set var=%%b
  2. set "var=%var:\=%"
  3. echo %var%
复制代码

這個可以滿足樓主的需求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:57 , Processed in 0.016837 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表