Windows 检测CMD中的可移动驱动器号
我正在尝试编写一个脚本,它将检测我的USB可移动驱动器名为“UUI”的字母,然后在上面创建文件夹。我已经为CMD编写了一些命令,当单独运行时,这些命令可以工作。然而,当我将它们放入bat文件时,我总是会遇到一些错误。以下是bat文件中的命令:Windows 检测CMD中的可移动驱动器号,windows,batch-file,cmd,removable-storage,drive-letter,Windows,Batch File,Cmd,Removable Storage,Drive Letter,我正在尝试编写一个脚本,它将检测我的USB可移动驱动器名为“UUI”的字母,然后在上面创建文件夹。我已经为CMD编写了一些命令,当单独运行时,这些命令可以工作。然而,当我将它们放入bat文件时,我总是会遇到一些错误。以下是bat文件中的命令: for /F "tokens=1 delims= " %i in ('WMIC logicaldisk where "DriveType=2" list brief ^| c:\windows\system32\fi
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
for/F“tokens=1 delims=“%i in('WMIC logicaldisk where“DriveType=2”列表摘要^c:\windows\system32\find.exe“UUI”)do(echo%i>drive.txt)
设置/p RemovableDriveLetter2=
当我转到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:\Users\UUI\Desktop>
我可以看到MyNewFolder没有被创建。但是,当我复制所有行并在CMD中运行它们(例如不在.bat文件中)并逐个运行它们时,它在CMD.exe实例中完全起作用
如何创建一个文件,该文件将成功运行并检测可移动驱动器的驱动器号而不会出现问题?或者如何解决错误“\windows\system32\find.exe此时意外出现”?您需要将批处理脚本(.bat
或.cmd
)中用于标记循环控制变量的符号加倍,即使用%%I
,而不是纯CLI中使用的%I
然而,还有另一种可能的方法来解析wmic
输出。
另见Dave Benham的
此处显示了
循环的
%%G
检索设备ID
值李>
%%i
删除返回值中的结束回车:wmic
行为:每个输出行以0x0D0D0A
(CR+CR+LF
)结束,而不是普通的0x0D0A
(CR+LF
)
可以使用标题
或名称
代替设备ID
:
==>WMIC logicaldisk where "DriveType=2" get /value | find ":"
Caption=F:
DeviceID=F:
Name=F:
注意:可能没有或更多磁盘具有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
脚本输出分别为否、一个和两个USB驱动器:
==>D:\bat\SO\31356732.bat
USBCounter=0
==>D:\bat\SO\31356732.bat
F:
USBCounter=1
==>D:\bat\SO\31356732.bat
F:
G:
USBCounter=2
==>
==>D:\bat\SO\31356732.bat
USBCounter=0
==>D:\bat\SO\31356732.bat
F:
USBCounter=1
==>D:\bat\SO\31356732.bat
F:
G:
USBCounter=2
==>