我有一个批处理文件,它位于USB密钥上。我需要知道该批次的驱动器名称。Windows批处理脚本获取当前驱动器名称
例如,如果它是E:\ mybatch.bat,它应该找到E:\ F:\,G:\等同样的东西。
我怎么能在批处理脚本中做到这一点。 (Windows)
我有一个批处理文件,它位于USB密钥上。我需要知道该批次的驱动器名称。Windows批处理脚本获取当前驱动器名称
例如,如果它是E:\ mybatch.bat,它应该找到E:\ F:\,G:\等同样的东西。
我怎么能在批处理脚本中做到这一点。 (Windows)
%CD%
是你在找什么。它打印批处理文件或运行它的命令的当前工作目录。如果您的批处理文件位于驱动器的根目录下,它将只显示驱动器盘符,否则您将不得不解析前2个字符。
实施例:
echo %CD%
打印
E:\
安装到E中的闪存驱动器上:.
更新:由于舍甫琴科在评论中说,如果你只是寻找路径的前三个字母,然后用它来代替%CD%:
%CD:~0,3%
这将导致E:\
,为例如,在驱动器上的任何地方。
我试图配置geany编辑器来编译我的java文件,即使即时在usb上。我使用%CD%JDK \ bin \ javac“%f”但它没有工作。无论如何,你的答案是完美的,我会尽快接受你的答案。 ty – SBSTP 2011-04-27 23:46:42
尝试%CD%\而不是%CD%。否则ITLL寻找E:JDK \ BIN \ javac的,而不是E:\ JDK \ BIN \ javac的 – 2011-04-27 23:48:50
我做了一个简单的脚本, 'code' 关闭@echo 呼应%CD% 暂停 'code' 印刷Ç :\不是C: – SBSTP 2011-04-28 00:14:03
如果从一个.cmd/.bat文件内运行,则可以使用%~dp0
来获得当前/工作目录。因为它知道UNC路径等,所以这个更安全一些。该变量的语法参考可用here。
不是true @ewall:参数0始终保留批处理文件位置的目录 - 如果有人从另一个驱动器调用该批处理文件,该目录可能不是当前工作目录。即使使用完全限定的路径名调用批处理文件也不会将当前工作目录更改为该路径。这就是为什么%cd%很有用 - 它显示了当前的工作目录,而不是批处理文件的位置。 – 2018-01-11 17:08:07
M $的文档 “Using batch parameters” 说:
修改:%〜D0
说明:将%0到驱动器号。
你可以找到任何与此驱动器的所有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 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 * * * * * * * * * *
是否要批次所在的驱动器或当前工作目录的驱动器?这两个是不同的。 – Joey 2011-04-28 08:52:50