[英]How can I get drive letter by searching USB name using Windows command or Node.js/Electron?
我想将内容下载到USB 磁盘中,在后台有区别地命名。 所以我需要找到它的position。 是否有任何 function 使用 Windows 命令来实现它?
或者是否有任何 function 使用 Node.js/Electron 找到 USB 驱动器?
如果可能的话,如何区分两个同名的 USB 驱动器?
如果批处理文件存储在通过 USB 连接到计算机的存储介质上,则可以使用%~d0
引用批处理文件的驱动器。
但是如果批处理文件存储在不同的存储介质上,例如PC内部的本地硬盘,下面的小批处理文件演示了如何通过卷名获取USB存储介质的驱动器号。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "DriveUSB="
set "VolumeName=NameOfVolume"
:GetDriveLetter
for /F "tokens=2 delims==" %%I in ('%SystemRoot%\System32\wbem\wmic.exe LOGICALDISK where VolumeName^="%VolumeName%" GET DeviceID /VALUE 2^>nul') do set "DriveUSB=%%I"
if not defined DriveUSB (
echo Device with name %VolumeName% not found.
echo/
%SystemRoot%\System32\choice.exe /C YN /N /M "Retry (Y/N):"
if errorlevel 2 goto :EOF
goto GetDriveLetter
)
echo Drive letter of %VolumeName% is: %DriveUSB%
rem More commands using environment variable DriveUSB.
echo/
pause
endlocal
NameOfVolume
必须适应真实的卷名。 此字符串由WMIC解释为不区分大小写。
请阅读有关Win32_LogicalDisk class及其属性的 Microsoft 文档,了解有关使用的 class 的更多信息。
设备识别也可以通过使用VolumeSerialNumber
而不是VolumeName
来完成,这比不格式化卷的卷名更难更改。 在命令提示符 window 中运行以下命令以显示卷序列号:
wmic LOGICALDISK where VolumeName="NameOfVolume" GET VolumeSerialNumber
要了解使用的命令及其工作原理,请打开命令提示符window,在其中执行以下命令,并仔细阅读每个命令显示的所有帮助页面。
choice /?
echo /?
endlocal /?
for /?
goto /?
if /?
pause /?
rem /?
setlocal /?
wmic /?
wmic logicaldisk /?
wmic logicaldisk get /?
阅读有关使用命令重定向运算符的 Microsoft 文档,了解2>nul
的说明。 当 Windows 命令解释器在执行命令FOR执行嵌入式wmic
命令行并使用在后台启动的单独命令进程之前处理此命令行时,重定向运算符>
必须在FOR命令行上使用脱字符^
进行转义以解释为文字字符%ComSpec% /c
和'
中的命令行作为附加的 arguments 附加。 这也是为什么=
必须用^
转义以解释为文字字符而不是参数分隔符的原因,否则该参数分隔符将由处理批处理文件的命令处理器实例替换为空格字符,从而使where
子句对wmic
执行的 wmic 无效后台命令进程。
建议阅读 DosTips 论坛主题: ECHO。 无法提供文本或空行 - 而是使用 ECHO/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.