【发布时间】:2009-04-25 08:47:25
【问题描述】:
我需要获取 USB 笔式驱动器的驱动器号。命令 CHDIR >drive.txt 给了我驱动器号 L:。如何在我的变量中读取/获取此信息“L:”而不带引号批处理文件
【问题讨论】:
标签: batch-file
我需要获取 USB 笔式驱动器的驱动器号。命令 CHDIR >drive.txt 给了我驱动器号 L:。如何在我的变量中读取/获取此信息“L:”而不带引号批处理文件
【问题讨论】:
标签: batch-file
这是从任何驱动器获取 USB 驱动器号的方法。
@echo off
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype
2^>NUL`) do (
if %%l equ 2 (
echo %%i is a USB drive.
)
)
【讨论】:
chdir 的任何输出也可以由伪变量%CD% 使用。所以你已经有了一个包含该信息的变量。
否则你可以使用for:
for /f "delims=" %%x in ('chdir') do set "drive=%%x"
但我认为%CD% 更容易:-)
编辑:你已经用引号说了。变量中不会有任何引号,除非您希望它们在其中。
至于尾随反斜杠:您可以使用以下内容代替%CD%:
%CD:~0,-1%
这将扩展%CD% 并删除最后一个字符,你知道它是反斜杠。
不过,仅当您位于该驱动器的根目录中时才有效。否则你也可以使用
for %%x in (%cd%) do @set drive=%%~dx
【讨论】:
在你的批处理中使用类似的东西:
set Drive=%cd:~0,2%
如果这是脚本所在的当前目录,当你使用它时,会产生 L: 的内容。如果批处理中有一些 popd/pushd、cd 等,请在使用时小心。剩下的就看你自己了
提供您将如何使用它(可能是您的批次的一部分)将有助于获得更好的答案。我们只能猜测。我认为,原因在于答案中有几个 for 循环。可能不需要,但我们正在猜测。
【讨论】:
for %%a in (d e f g h i j k l m n o p q r s t u v w x y z) do vol %%a: 2>nul |find "NAME OF THE USB" >nul &&
set drv=%%a:
%drv%
这是我用来在我的 USB 上查找字母的工具
【讨论】:
因为cd 会输出类似:
c:\documents and settings\pax
您只需要使用"\" 作为分隔符来获取第一个字段,如下所示:
for /f "delims=\" %d in ('cd') do set curdrv=%d
这会将环境变量 curdrv 设置为 c: 以用于上述输出。
如果在 cmd 文件中运行,请不要忘记使用双 % (%%d) 变体。
【讨论】: