Windows批处理脚本获取当前的驱动器名称

我有一个在USB钥匙上的batch file。 我需要知道批处理的驱动器名称。

例如,如果是E:\ mybatch.bat,它应该findE:\ F:\,G:\等。

我怎么能在批处理脚本中做到这一点。 (视窗)

%CD%是你正在寻找的。 它打印批处理文件或运行它的命令的当前工作目录。 如果您的批处理文件位于驱动器的根目录下,它将只打印驱动器号,否则您将不得不解析前2个字符。

例:

 echo %CD% 

版画

 E:\ 

在安装到E:的闪存驱动器上。

更新:正如Andriy在评论中所说的那样,如果你只是在寻找路径的前三个字符,那就用这个来代替%CD%:

 %CD:~0,3% 

这将导致E:\ ,例如,驱动器上的任何位置。

M $文档“ 使用批处理参数 ”说:

修饰符:%〜d0

说明:将%0扩展为一个驱动器号。

如果从.CMD / .BAT文件中运行,则可以使用%~dp0来获取当前/工作目录。 因为它知道UNC路径等,所以这个更安全一些。 这个变量的语法参考可以在这里找到 。

你可以从这个驱动器找到所有的USB驱动器盘符。

 @echo off for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do ( if %%l equ 2 ( echo %%i is a USB drive. ) ) 

非常感谢@ Sparky3489,如果我只有一个USB闪存驱动器,我把它放在你的算法,右后

 echo %%i is a USB drive. Set FlashDrive=%%I 

我也把标识符的措辞改成了

 Echo %%i is a USB Flash Drive~! 

然后,算法之后,{和外部},我可以添加闪存驱动器路径,如…

 Set FlashPath=%FlashDrive%\Users\Public\Documents 

然后通过设置其他路径如

 Set SourcePath=C:\Users\Public\Documents 

我可以为闪存驱动器创建一个批量文件备份,(如果怀疑我在说什么,可以在快速启动窗口中搜索“快速启动”,通过Windows快捷方式调用相关图标)。

 Rem * * * * * * * * * Start Batch File * * * * * * * * * * @Echo OFF cls Echo FlashDrive UpDater for Echo. Echo Excel, Word ... Echo * * * * * * * * * ~ Excel SpreadSheets ~ * * * * * * * * * XCopy /D /I /V /Y /U /S "%SourcePath%\Excel Documents\*.*" "%FlashPath%\Excel Documents\" Echo * * * * * * * * * ~ Word Documents ~ * * * * * * * * * XCopy /D /I /V /Y /U /S "%SourcePath%\Word Documents\*.*" "%FlashPath%\Word Documents\" Echo. Echo. Echo FlashDrive = %FlashDrive% Echo FlashPath = %FlashPath% Echo. Echo * Bonus Switch Info * * * * * Echo * XCopy Switch /D ~ Copies Files Changed On or After the Specified Date. Echo * {If no Date is Given, Copies only those Files whose Echo * Source Time is Newer than the Destination Time}. Echo * XCopy Switch /I ~ Copies More than One File to Destination (Assumes Destination is a Directory) Echo * XCopy Switch /S ~ Copies Directories and Subdirectories Except Empty Ones Echo * XCopy Switch /V ~ Verifies Each New File. Echo * XCopy Switch /U ~ Copies only Files that Already Exist in Destination. Echo * XCopy Switch /Y ~ Suppresses Prompting to Confirm You Want to Overwrite an Existing Destination File. Echo. Rem for More Info on XCopy Switches GoTo http://support.microsoft.com/kb/128756 Echo Directory Path = %~DP0 Echo. Echo * Batch File Name = %0 * Echo. Rem Echo %CD:~0,2%, {Returns "Drive Letter & Colon"} Rem Echo %CD:~0,3%, {Returns "Drive Letter & Colon & BackSlash"} Pause cls Pause Exit Rem * * * * * * * * * End Batch File * * * * * * * * * *