【问题标题】:Find current diskpart volume number in .bat在 .bat 中查找当前的 diskpart 卷号
【发布时间】:2015-08-25 20:09:50
【问题描述】:

在 USB 驱动器上使用 .bat 脚本我想在不使用 3rd 方软件的情况下更改其驱动器号,并且对插入 USB 的系统有任何要求,但 Windows XP 或更高版本除外。

获取我使用的当前驱动器号

设置驱动器=%~dp0

这是E:例如

在我真正改变E:的盘符之前,如何自动找出diskpart的卷列表中的卷号?

选择卷 E:

显然不行,你只能用n作为盘号。

编辑:

感谢@wOxxOm 的解决方案。 这是我现在用来将脚本所在驱动器的驱动器号自动更改为 U:\

的最终 .bat 脚本
@echo off
set DRIVERAW=%~dp0
set DRIVE=%DRIVER:~0,1%
if %DRIVE%==U exit
for /f "tokens=2,3" %%a in ('echo list volume ^| diskpart') do (
    if %%b==%DRIVE% set VOLNO=%%a
)
del %DRIVERAW%\diskpart.txt
echo select volume %VOLNO% > %DRIVERAW%\diskpart.txt
echo assign letter=U >> %DRIVERAW%\diskpart.txt
echo ^G
diskpart /s %DRIVERAW%\diskpart.txt
exit

如果不应该将两个 U 挂载到 U:\

,则可以将两个 U 替换为您想要的任何其他驱动器号

请确保 U:\

上已安装任何内容

【问题讨论】:

  • 如果问题只是关于查找驱动器号,显然是duplicate。
  • @wOxxOm 请在说它是重复的之前阅读,我已经阅读了有关查找驱动器号的所有内容,但这不是我的问题。我知道驱动器号,但我需要它在 diskpart 中使用的卷号。
  • @wOxxOm 很抱歉,但我不明白它是如何工作的。我尝试在bat文件和cmd中手动运行echo list volume | diskpart,但它所做的只是打开diskpart。我不熟悉使用 for /f 解析输出,即使我之前使用过 cmd 很多:/

标签: batch-file disk-partitioning drive-letter


【解决方案1】:

解析如下所示的卷列表:

Volume 6 E MY_USB FAT32 可移动 971 MB 正常

在提升的命令提示符下运行或右键单击 .bat 文件并以管理员身份运行。

for /f "tokens=2,3" %%a in ('echo list volume ^| diskpart') do (
    if %%b==E echo Volume number is %%a
)

您还可以通过卷名(使用tokens=2,4)或卷类型(使用tokens=2,6)进行检查,如果卷名包含空格,则需要使用令牌编号。

【讨论】:

  • 感谢您的快速响应,但它仍然只打开了 diskpart 窗口并且没有任何反应(关闭没有返回任何内容并且脚本结束)。 Windows 10 与任何其他版本应该没有什么不同,但这可能是问题所在吗?这是一个全新的安装。抱歉有这么多问题...脚本正是@echo off NL for /f "tokens=2,3" %%a in ('echo list volume ^| diskpart') do ( NL if %%b==U echo Volume number is %%a NL ) NL pause(下一行是NL)
  • 在命令提示符下运行echo list volume | diskpart,并将输出与答案中的参考进行比较。
  • 我手头没有确切的语法,但如果您尝试使用 wmic 接收该信息,它可能会更好
  • @Marged,是的,但我听说 WMIC 可能被禁用/无法正常工作,尤其是在较旧的 XP 上。无论如何,我在wmic logicaldisk get的输出中看不到适合diskpart的序号。
  • 行以Volume Number Letter Label 开头,所以字母标记总是第三个,卷标是(或开头)第四个标记,但可能跨越到更多标记(第 5 个等)以防有空格。
【解决方案2】:

批处理文件中的第三行,set DRIVE=%DRIVER:~0,1% 应该是,set DRIVE=%DRIVERAW:~0,1%

有了这个改变,它对我有用。

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多