在 CMD 中检测可移动驱动器盘符

2023-12-07

我正在尝试编写一个脚本,它将检测我的 USB 可移动驱动器的字母“UUI”,然后在其上创建文件夹。我为 CMD 编写了一些命令,这些命令单独运行时可以工作。然而,当我将它们放入bat文件中时,我总是会遇到一些错误。下面是bat文件中的命令:

for /F "tokens=1 delims= " %i in ('WMIC logicaldisk where "DriveType=2" list brief ^| c:\windows\system32\find.exe "UUI"') do (echo %i > drive.txt)
set /p RemovableDriveLetter2= < drive.txt
del /F /Q drive.txt
set RemovableDriveLetter=%RemovableDriveLetter2:~0,1%
%RemovableDriveLetter%:
md MyNewFolder
cd MyNewFolder

当我转到 cmd.exe 并通过调用“myScript.bat”或“call myScript.bat”运行该文件时,出现错误:

C:\Users\UUI\Desktop>myScript.bat

\windows\system32\find.exe这时候出乎意料。

C:\Users\UUI\Desktop>for /F "tokens=1 delims= " \windows\system32\find.exe "UUI"') do (echo i >drive.txt)

C:\用户\UUI\桌面>

我可以看到 MyNewFolder 没有创建。但是,当我复制所有行并在 CMD 中运行它们(例如不在 .bat 文件中)并一一运行它们时,它在 cmd.exe 实例中具有完整的功能。

如何创建 bat 文件,该文件将成功运行并检测可移动驱动器的驱动器号而不会出现问题?或者如何解决“\windows\system32\find.exe 此时出现意外”错误?


你需要double the %用于标记一个的标志FOR批处理脚本中的循环控制变量(.bat or .cmd),即使用%%i代替%i在纯 CLI 中使用。

然而,还有另一种可能的方法如何解析wmic输出。 另请参阅戴夫·贝纳姆的WMIC and FOR /F: 修复了尾随的问题<CR> problem

@echo OFF
SETLOCAL enableextensions
set "USBCounter=0"
for /F "tokens=2 delims==" %%G in ('
    WMIC logicaldisk where "DriveType=2" get DeviceID /value 2^>NUL ^| find "="
') do for /F "tokens=*" %%i in ("%%G") do (
    set /A "USBCounter+=1"
    echo %%i
    rem your stuff here
)
echo USBCounter=%USBCounter%
rem more your stuff here
ENDLOCAL
goto :eof

这里的for循环是

  • %%G检索DeviceID value;
  • %%i删除结尾回车在返回值中:wmic行为:每个输出行以0x0D0D0A (CR+CR+LF)而不是常见的0x0D0A (CR+LF).

一个可以使用Caption or Name代替DeviceID:

==>WMIC logicaldisk where "DriveType=2" get /value | find ":"
Caption=F:
DeviceID=F:
Name=F:

注意可能有no or more磁盘存在DriveType=2:

==>WMIC logicaldisk where "DriveType=2" get /value | find ":"
No Instance(s) Available.

==>WMIC logicaldisk where "DriveType=2" list brief
DeviceID  DriveType  FreeSpace   ProviderName  Size        VolumeName
F:        2          2625454080                3918512128  HOMER
G:        2          999600128                 1029734400  LOEWE

Script output for no, then one进而twoUSB 驱动器分别:

==>D:\bat\SO\31356732.bat
USBCounter=0

==>D:\bat\SO\31356732.bat
F:
USBCounter=1

==>D:\bat\SO\31356732.bat
F:
G:
USBCounter=2

==>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CMD 中检测可移动驱动器盘符 的相关文章

随机推荐

  • 如何以表格形式打印多个对象的参数? [复制]

    这个问题在这里已经有答案了 我有一个对象列表 我想在一个漂亮的表格中打印每个对象的参数 我的代码在这里 class item object def init self thing owner color self thing thing s
  • AngularJs 从人类可读的日期获取时间戳

    Angular JS 有没有办法从表单获取的日期获取时间戳
  • ContentEditable 元素对热键没有反应

    我正在开发一个 Chrome 扩展 它将 JS 代码注入所有打开的选项卡中 该代码的任务包括显示一个文本框 实现为contentEditable div 以允许格式化 但是 那contentEditableelement 与某些网站不能很好
  • 从字符串中删除 \\u{e2} 字符

    我复制了联系人的手机号码 我得到的结果就像 8008708600 u e2 我想删除 u e2 来自字符串 字符串是用我不想要的指数字符复制的 例如 8008708600 u e2 所以期望的输出是8008708600 我使用了以下代码 l
  • 如何捕捉可访问性焦点的变化?

    我想捕捉可访问性焦点的变化 我搜索并尝试过accessibilityElementDidBecomeFocused但光标改变后没有触发 我想向按钮添加值 并在光标更改后删除该值 我的代码是这样的 override func viewDidL
  • $('#id').value 未定义

    我在尝试检查字段的长度并根据结果设置值时遇到问题 在 Firefox 中使用 firebug 我不断收到错误 elUsername 未定义 请告诉我我做错了什么 对 JQuery 相当陌生 usernameInput blur functi
  • 将 Azure Function 发布为 NuGet 包(或从外部程序集加载函数)

    我正在考虑将可重用的 Azure Functions 作为 NuGet 包发布 以便在其他项目中轻松使用它 这样我就可以在其他项目中引用NuGet包 这样我就可以动态地组合一组要部署到 Azure Function 服务的 Azure Fu
  • 如何在 Objective-C 中扫描字符串数组中的一组子字符串?

    所以我基本上有一系列单词和短语 其中一些包含诅咒 我想创建一个方法来自动扫描数组中的每个单元以查找诅咒 如果它没有诅咒 请将其添加到新数组中 我意识到我可以用一堆来做到这一点if else if声明和rangeOfString方法 但令我震
  • 从 git 存储库拉取时出现“致命:HTTP 请求失败”错误

    在过去 4 年里 我一直在 github 存储库中推送和提取文件 没有出现任何问题 两天前 我尝试使用此后一直使用的相同命令从存储库中提取数据 git pull origin master但我不断收到错误 error while acces
  • 为什么 Unsafe.fullFence() 不能确保我的示例中的可见性?

    我正在尝试深入研究volatileJava 中的关键字和设置 2 测试环境 我相信它们都使用 x86 64 并使用热点 Java version 1 8 0 232 CPU AMD Ryzen 7 8Core Java version 1
  • 找到 Google Apps 脚本来终止它

    我正在尝试谷歌脚本 我只是从示例中复制代码以使用 Google 脚本创建 Google 文档 但我忘记删除该脚本 现在的问题是脚本向我发送了大量电子邮件并在我的帐户上创建文档 我无法找到为我删除它的脚本 See 第 4096 期 请求 管理
  • 为什么A | B 允许两者结合,我该如何防止呢?

    我惊讶地发现 TypeScript 不会抱怨我做这样的事情 type sth value number data string value number note string const a sth value 7 data test c
  • 如何在 Java 应用程序中添加文件浏览器?

    我是 Java 编程新手 正在构建一个应用程序 该应用程序将添加 显示和删除给定文件夹位置中的文件 我已经使用 JFileChooser 添加了文件 并且知道如何删除这些文件 然而我被显示部分困住了 我想在我的应用程序中使用不同的图标显示文
  • 在 Fortran 90 中使用模块内部的子例程

    我有一个关于在 Fortran 90 中的模块内使用子例程的问题 这是我的代码 Module Multiplication Subroutine Two times input output Real input output output
  • Castle.Windsor 和 HttpContextWrapper

    HttpContextWrapper 和 HttpContextBase 如在这里解释 被引入是为了使 HttpContext 更加可模拟 可测试 我正在尝试使用它S arp 架构 并遇到一些问题 我的 MVC 控制器设置为在构造函数中接受
  • Python:Matplotlib - 多个数据集的概率图

    我有几个数据集 分布 如下 set1 1 2 3 4 5 set2 3 4 5 6 7 set3 1 3 4 5 8 如何使用上面的数据集绘制散点图 其中 y 轴是概率 即集合中分布的百分位数 0 100 x 轴是数据集名称 在 JMP 中
  • libstdc++ 是可重入库吗?

    我在 MAC 上使用 libstdc 来开发 Firefox 的扩展 当我在多个 Firefox 扩展中引用 libstdc 库时 我在 libstdc 库中遇到崩溃 我在想XCode编译器的libstdc 是否可重入 如果没有 是否有任何
  • 在Python命令行上定义函数时出现语法错误

    我正在尝试在 Python REPL 上定义一个函数 每次我尝试运行下面的代码时 都会收到语法错误 Code def hello print Hello hello Error C Users Desktop gt python Pytho
  • SSIS - 脚本任务:使用带有动态文件路径的 VBscript 替换文本文件中的 TEXT

    我正在使用 SSIS 脚本任务来替换文本文件中的文本 在我的 VB 脚本中 脚本中硬编码了文件路径 但我想改用用户变量 Const ForReading 1 Const ForWriting 2 Dim objFSO objFile str
  • 在 CMD 中检测可移动驱动器盘符

    我正在尝试编写一个脚本 它将检测我的 USB 可移动驱动器的字母 UUI 然后在其上创建文件夹 我为 CMD 编写了一些命令 这些命令单独运行时可以工作 然而 当我将它们放入bat文件中时 我总是会遇到一些错误 下面是bat文件中的命令 f