标题: [系统相关] 批处理BAT如何准确获取含空格的分区卷标? [打印本页]
作者: crist 时间: 2014-2-19 17:51 标题: 批处理BAT如何准确获取含空格的分区卷标?
假设C盘卷标是 “A B C”,如果我要在一个批处理中将C盘卷标作为一个变量,应该如何写代码?复制代码
结果是
驱动器 C 中的卷是 A B C
卷的序列号是 0009-C9A9
请问如何能将上述结果出现的“A B C”作为一个变量传送给下一个命令呢?
作者: DAIC 时间: 2014-2-19 18:51
- @echo off
- for /f "delims=" %%i in ('VOL C: ^| findstr "中的卷是"') do (
- set str=%%i
- )
- set str=%str:*是 =%
- echo,%str%
- 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- $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://www.bathome.net/) |
Powered by Discuz! 7.2 |