Board logo

标题: [系统相关] 批处理BAT如何准确获取含空格的分区卷标? [打印本页]

作者: crist    时间: 2014-2-19 17:51     标题: 批处理BAT如何准确获取含空格的分区卷标?

假设C盘卷标是 “A B C”,如果我要在一个批处理中将C盘卷标作为一个变量,应该如何写代码?
  1. VOL C:
复制代码
结果是
驱动器 C 中的卷是 A B C
卷的序列号是 0009-C9A9

请问如何能将上述结果出现的“A B C”作为一个变量传送给下一个命令呢?
作者: DAIC    时间: 2014-2-19 18:51

  1. @echo off
  2. for /f "delims=" %%i in ('VOL C: ^| findstr "中的卷是"') do (
  3.     set str=%%i
  4. )
  5. set str=%str:*是 =%
  6. echo,%str%
  7. pause
复制代码

作者: crist    时间: 2014-2-20 10:18

回复 2# DAIC


    原来是需要用findstr来进一步定位啊,谢谢!
作者: crist    时间: 2014-2-20 11:00

回复 2# DAIC


    刚发现两个不是问题的问题:
    1、pe系统可能没有findstr
    2、当尝试使用format c: /v:%str% /fs:ntfs /q /x /y命令格式化c盘的时候发现format会因卷标含空格而无法格式化
作者: DAIC    时间: 2014-2-20 12:08

回复 4# crist


你先确定一下PE里面到底有没有下面某个命令:
find
findstr
作者: crist    时间: 2014-2-20 15:39

回复 5# DAIC


    有些pe有,有些pe没有,这不算问题,发现缺少的文件我补进去就是了。主要是发现format命令不支持含空格的卷标
作者: apang    时间: 2014-2-20 16:23

有个外部命令叫 label.exe
format c: /fs:ntfs /q /x /y
label c: A B C
作者: PowerShell    时间: 2014-2-20 16:58

1 在图形界面中,为c盘设置卷标为,【传 教 10】,不含【】
2
  1. $aaa = (Get-Volume c).FileSystemLabel
复制代码
----- c 为盘符
3结论:空格,中文,皆可以。
作者: crist    时间: 2014-2-20 17:55

回复 7# apang


    虽然将一个命令(format)变成两个命令(format+label),不过确实能解决问题的话倒也不失为一种思路。
作者: crist    时间: 2014-2-20 17:56

回复 8# PowerShell


    如果format本身不支持/V参数带空格的话,你这个代码得出的变量要如何让format命令接受呢?
作者: DAIC    时间: 2014-2-20 17:59

回复 6# crist


    7楼正解,先用label命令把卷标删掉,再format
作者: DAIC    时间: 2014-2-20 18:00

回复 10# crist


    8楼说的是PowerShell脚本,估计你不会考虑在PE里面安装PowerShell
作者: PowerShell    时间: 2014-2-21 09:56

1 对于解题的话,当然是取出卷标存入变量,format,然后再根据变量设置卷标。
2 对于powershell pe 也是很容易的,谁感兴趣?
作者: DAIC    时间: 2014-2-21 14:20

回复 13# PowerShell


当然是取出卷标存入变量,format,然后再根据变量设置卷标。

你没有看懂楼主的问题吧,10楼说了,format本身不支持带空格的卷标。
作者: xybzm    时间: 2014-2-21 16:56

学习了。学习了




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