无忧启动论坛

标题: 请教:怎样在Windows中用命令行根据磁盘的卷标来获取盘符? [打印本页]

作者: awera    时间: 2006-12-3 07:19
标题: 请教:怎样在Windows中用命令行根据磁盘的卷标来获取盘符?
怎样在Windows中用命令行根据磁盘的卷标来获取盘符?

比如 我的 移动硬盘 中有个分区 的卷标是 “移动盘h”
在a电脑上是的盘符为 H:
在b电脑上是的盘符为G:

不知道可否根据磁盘的卷标“移动盘h”来获取盘符,
这样写批处理的时候就不需要更改 G: H: 之类的了……
作者: 老毛桃    时间: 2006-12-3 14:06
  1. @ECHO OFF
  2. :BEGIN
  3. CLS
  4. set AskVolume=
  5. Set /P AskVolume=请输入您要查询的分区的卷标:
  6. If "AskVolume%AskVolume%"=="AskVolume" GOTO BEGIN
  7. cd.>script.txt
  8. >>script.txt echo list volume
  9. for /f "tokens=3,4" %%i in ('diskpart /s script.txt^|find ^"Software^"') do Set PartitionNum=%%i&&SET AskVolume=%%j
  10. del script.txt /q
  11. echo 您所查询的卷标为 %AskVolume% 的分区为:%PartitionNum%
  12. pause
复制代码

作者: awera    时间: 2006-12-5 11:53
试了,就是不可以啊,是不是下面这一句出了问题:

for /f "tokens=3,4" %%i in ('diskpart /s script.txt^|find ^"Software^"') do Set PartitionNum=%%i&&SET AskVolume=%%j

不过也学到了东西,谢谢啦 :)
发现自己还有好多dos命令是不熟悉的
作者: namejm    时间: 2006-12-5 12:17
  可以试一下下面的代码:

  1. @echo off

  2. :begin
  3. cls
  4. set flag=0
  5. set input=
  6. set /p input= 请输入要查询的卷标:
  7. if "%input%"=="" goto begin
  8. for %%i 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 (
  9.     for /f "tokens=4" %%j in ('vol %%i: 2^>nul') do if /i "%%j"=="%input%" call :success %%i&set flag=1
  10. )
  11. if %flag% neq 1 echo 没有卷标为 %input% 的分区
  12. pause
  13. goto begin

  14. :success
  15. echo.
  16. echo  卷标为 %input% 的分区有:%1
  17. echo.
  18. goto :eof
复制代码

作者: awera    时间: 2006-12-5 13:09
可以了,谢啦
作者: 老毛桃    时间: 2006-12-5 20:47
原帖由 namejm 于 2006-12-5 12:17 发表
  可以试一下下面的代码:

@echo off

:begin
cls
set flag=0
set input=
set /p input= 请输入要查询的卷标:
if "%input%"=="" goto begin
for %%i in (c d e f g h i j k l  ...

倒塌~~~,当时想来想去,就是想不起还有 VOL 这个经典的命令,DOS 下就用过的。。。

就写了 2 楼的那一段,在我机器上测试没有问题的。。。
作者: ccwan    时间: 2006-12-7 08:33
namejm兄确实高明啊!佩服!
作者: Ryunn    时间: 2021-11-13 22:06
namejm 发表于 2006-12-5 12:17
  可以试一下下面的代码:

确实可行 感谢




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3