Board logo

标题: [文本处理] [已解决]批处理怎样用管道查询指定卷标的盘符? [打印本页]

作者: 539956485    时间: 2012-10-18 16:31     标题: [已解决]批处理怎样用管道查询指定卷标的盘符?

做了个批处理 本意是显示对应卷标为 D^F 的盘符
运行之后 提示 系统找不到对应路径 检查了好多遍 不知道错在哪了 哪位能指出错在哪了!
  1. @echo off
  2. for %%a in (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 (
  3.   for /f %%h in ('vol %%a:^|findstr "D^F"') do (
  4.     set DriveU=%%h
  5.   )
  6. )
  7. echo.%DriveU%
  8. pause
复制代码

作者: 539956485    时间: 2012-10-18 19:28

额 自己解决出来了 ................................
作者: forfiles    时间: 2012-10-19 11:45

回复 2# 539956485


    贴出来给大家分享一下吧
作者: 539956485    时间: 2012-10-20 11:24

第七行代码
  1. set DriveU=%%h
复制代码
应该是
  1. set DriveU=%%a
复制代码
自己粗心了
作者: 539956485    时间: 2012-10-20 11:32

每次执行都回显一大堆信息,不知道怎么把信息屏蔽不回显 哪位能给指导一下改一下代码....
作者: apang    时间: 2012-10-20 14:34

回复 5# 539956485


    回显的信息是因为没有找到那么多盘符。假设只有c d e f盘,那么从G盘开始会出现错误信息
要屏蔽错误信息,可以用if exist "%%a:\" 或者 2>nul,以下仅供参考:
  1. @echo off
  2. for %%a in (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 (
  3.   for /f "tokens=3*" %%h in ('vol %%a: 2^>nul^|find "驱动器"') do (
  4.     if "%%i"=="D^F" set "DrvU=%%a"&goto :11
  5.   )
  6. )
  7. :11
  8. echo,%DrvU%
  9. pause
复制代码

作者: 539956485    时间: 2012-10-20 16:34

回复 6# apang
我懂了 但又有问题了
假如 我
  1. vol c:
复制代码
屏幕回显内容是
  1. 驱动器 c 中的卷是 D^F
复制代码
用这段代码
  1. for /f "tokens=3*" %%h in ('vol c: 2^>nul^|find "驱动器"') do (
  2. echo %%h  )
复制代码
回显的内容是
  1. 中的卷是
复制代码
为什么 驱动器 后面 还有个 c 会直接跳过去
按理说 回显内容应该是 c  啊?
作者: apang    时间: 2012-10-20 19:58

回复 7# 539956485


不是这样子理解的。比如这一句:
  1. for /f "tokens=3*" %%h in ('vol c:^|find "驱动器"') do echo,%%h
复制代码
是将vol命令执行的结果"驱动器 c 中的卷是 D^F"再传给for处理

因为for语句省略了delims选项,默认以空格作为分隔符划分为4节

(或更多,如果"D^F"变成"D^F ABC"的话就是5节)。

tokens=3*的意思是将第3节(即:"中的卷是")开始后的两节:

"中的卷是"赋给变量%%h,"D^F"(或"D^F ABC")赋给%%i。

所以这条语句最后执行的结果显示的是:中的卷是

如果改成:
  1. for /f "tokens=2*" %%h in ('vol c:^|find "驱动器"') do echo,%%h
复制代码
显示的就是:c

建议学习一下置顶贴"批处理for语句从入门到精通",定会有收获。
作者: 539956485    时间: 2012-10-20 20:37

回复 8# apang


    非常感谢~~~
作者: jzwtxp    时间: 2022-12-7 19:48

请问 如果没有找到相应的卷标怎么加另一个条件echo 没有找到 呢?谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2