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

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

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

请问如何能将上述结果出现的“A B C”作为一个变量传送给下一个命令呢?

  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
复制代码

TOP

回复 2# DAIC


    原来是需要用findstr来进一步定位啊,谢谢!

TOP

回复 2# DAIC


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

TOP

回复 4# crist


你先确定一下PE里面到底有没有下面某个命令:
find
findstr

TOP

回复 5# DAIC


    有些pe有,有些pe没有,这不算问题,发现缺少的文件我补进去就是了。主要是发现format命令不支持含空格的卷标

TOP

有个外部命令叫 label.exe
format c: /fs:ntfs /q /x /y
label c: A B C

TOP

1 在图形界面中,为c盘设置卷标为,【传 教 10】,不含【】
2
  1. $aaa = (Get-Volume c).FileSystemLabel
复制代码
----- c 为盘符
3结论:空格,中文,皆可以。
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 7# apang


    虽然将一个命令(format)变成两个命令(format+label),不过确实能解决问题的话倒也不失为一种思路。

TOP

回复 8# PowerShell


    如果format本身不支持/V参数带空格的话,你这个代码得出的变量要如何让format命令接受呢?

TOP

回复 6# crist


    7楼正解,先用label命令把卷标删掉,再format

TOP

回复 10# crist


    8楼说的是PowerShell脚本,估计你不会考虑在PE里面安装PowerShell

TOP

1 对于解题的话,当然是取出卷标存入变量,format,然后再根据变量设置卷标。
2 对于powershell pe 也是很容易的,谁感兴趣?
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 13# PowerShell


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

你没有看懂楼主的问题吧,10楼说了,format本身不支持带空格的卷标。

TOP

学习了。学习了

TOP

返回列表