【发布时间】:2018-01-25 10:22:21
【问题描述】:
希望有人可以帮忙:)
我在努力
- 将 WMIC 查询的输出放入变量中
- 通过删除最后一个字符(冒号)来操作此变量
- 在我的脚本中重用这个剩余的字符
这是生成我需要使用的值的行:
for /f "skip=1" %%A in ('wmic logicaldisk where "Description='Removable Disk'" get name') do
通常,输出如下所示:
E:
现在我需要剪切这个变量以仅获取驱动器字母“E”,我需要在我的脚本中重复使用它。
我发现了this 威胁,我希望它也能解决我的问题。 不幸的是,这对我不起作用,因为应用这个输出完全是空的。
我认为在将输出 %%A 写入变量时我做错了。
我的代码目前如下所示:
@ECHO OFF
for /f "skip=1" %%A in ('wmic logicaldisk where "Description='Removable Disk'" get name') do (
echo.%%A
set drive=%%A
set drive=%drive:~0,-1%
echo.%drive%
)
这段代码的输出是:
E:
:*:
:*:
有人知道我做错了什么吗? :)
提前感谢您的帮助!
【问题讨论】:
-
在这里使用
%drive:~0,1%。WMIC有一个非标准的行尾,这会导致一个以<CR>结尾的变量 -
嗨@Stephan,感谢您的快速回复:) 现在输出是(逐行)
E: ~ ~ -
如果你坚持使用那个方法,那么延迟扩展肯定会有帮助。
-
E: ~ ~是因为wmic输出 4 行。您跳过第一个,第二个是您的“有效负载”,然后有两行(显然是空的)。问题是,对于命令解释器来说,它们不是为空的,而是包含<CR>。在我的回答中,我避免处理它们,因为它们没有第二个令牌(几种可能性之一)。 -
这只是一个说明,不保证USB驱动器将注册为
Removable Disk。
标签: windows batch-file variables for-loop wmic