Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 检测CMD中的可移动驱动器号_Windows_Batch File_Cmd_Removable Storage_Drive Letter - Fatal编程技术网

Windows 检测CMD中的可移动驱动器号

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

我正在尝试编写一个脚本,它将检测我的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
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

==>