You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows 10批处理中获取指定盘符卷标并赋值给变量

Windows 10下提取光盘卷标并创建同名文件夹的BAT脚本方案

直接用vol命令结合for循环可以提取卷标,不过更推荐用wmic命令,它的输出格式更稳定,不受系统语言影响。以下是两种可行的实现方式:

方法一:基于vol命令提取(适配中文系统)

vol E:的输出第一行格式为 驱动器 E: 的卷标是 [卷标内容],通过for /f解析该行内容,提取卷标部分:

@echo off
setlocal enabledelayedexpansion

set "disc_label="

:: 解析vol命令的第一行输出,提取卷标
for /f "tokens=6* delims= " %%a in ('vol E:') do (
    set "disc_label=%%a"
    :: 处理带空格的卷标
    if not "%%b"=="" set "disc_label=!disc_label! %%b"
    goto :extract_done
)

:extract_done

:: 验证卷标是否获取成功
if not defined disc_label (
    echo 无法获取E盘卷标,请检查光盘是否正确挂载。
    pause
    exit /b 1
)

:: 在目标驱动器创建同名文件夹(这里以D盘为例,可自行修改路径)
md "D:\!disc_label!" >nul 2>&1

if %errorlevel% equ 0 (
    echo 成功创建文件夹:D:\!disc_label!
) else (
    echo 文件夹创建失败,可能路径已存在或权限不足。
)

endlocal

方法二:基于wmic命令提取(更通用,不受语言限制)

wmic可以直接查询磁盘的卷标属性,输出格式更规范,适合多语言系统:

@echo off
setlocal enabledelayedexpansion

set "disc_label="

:: 通过WMIC查询E盘卷标
for /f "skip=1 tokens=2 delims==" %%a in ('wmic logicaldisk where "DeviceID='E:'" get VolumeName /value') do (
    :: 清理输出中的多余空格和换行符
    set "disc_label=%%a"
    set "disc_label=!disc_label: =!"
    goto :extract_done
)

:extract_done

if not defined disc_label (
    echo 无法获取E盘卷标,请检查光盘是否正确挂载。
    pause
    exit /b 1
)

:: 创建同名文件夹
md "D:\!disc_label!" >nul 2>&1

if %errorlevel% equ 0 (
    echo 成功创建文件夹:D:\!disc_label!
) else (
    echo 文件夹创建失败,可能路径已存在或权限不足。
)

endlocal

关键说明

  • setlocal enabledelayedexpansion:开启延迟变量扩展,确保循环内修改变量能被正确读取
  • goto :extract_done:只处理vol或wmic的第一行有效输出,避免读取后续无关内容
  • >nul 2>&1:重定向命令输出,避免创建文件夹时显示重复提示信息

内容的提问来源于stack exchange,提问作者Ian M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:35:50