Windows批处理脚本获取当前驱动器名称
我有一个批处理文件,位于 USB 密钥上。我需要知道批处理所在的驱动器名称。
例如,如果它是 E:\mybatch.bat,则在打开它时,它应该找到 E:\ 与 F:\、G:\ 等相同的内容。
我怎样才能在批处理脚本中做到这一点。 (视窗)
I have a batch file which is on a usb key. I need to know the drive name the batch is in.
Example, if it's E:\mybatch.bat it should find E:\ same thing for F:\, G:\ etc.. when it's opened.
How could I do that in batch script. (Windows)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
%CD%
就是您要寻找的内容。它打印批处理文件或运行它的命令的当前工作目录。如果您的批处理文件位于驱动器的根目录下,它只会打印驱动器号,否则您必须解析前 2 个字符。示例:
打印
在安装到 E: 的闪存驱动器上
。更新:正如 Andriy 在评论中所说,如果您只是查找路径的前三个字符,请使用它而不是 %CD%:
这将导致
E:\
,例如,驱动器上的任何位置。%CD%
is what you're looking for. It prints the current working directory of the batch file or command running it. If your batch file is on the root of the drive, it will just print the drive letter, otherwise you'll have to parse the first 2 characters.Example:
prints
on a flash drive mounted to E:.
Update: As Andriy said in the comments, if you are just looking for the first three characters of the path, then use this instead of %CD%:
This will result in
E:\
, for example, anywhere on the drive.M$ 文档“使用批处理参数< /a>” 说:
M$ documentation "Using batch parameters" says:
请注意,
此问题的现有答案并不承认该问题实际上是在询问两个不同的事情:
当批处理文件从工作目录而不是其驻留位置启动时,这些可能会有所不同。因此,在确定哪种解决方案适合他们的案例之前,读者应该清楚其中的差异。
当前工作目录的驱动器
这将获取完整的当前工作目录并将其缩减为前两个字符,这将是驱动器号和冒号,例如
C:
。批处理文件本身的驱动器
这会将批处理文件的完整路径(在
%0
中)修剪为仅一个驱动器号和一个冒号,例如C:< /代码>。
(这是我的拒绝编辑到Kai K的回答)
Beware
The existing answers to this question don't acknowledge that the question is actually asking about two different things:
These can be different when the batch file is started from a working directory other than its residing location. Readers should therefore be clear on the difference before determining which solution is relevant to their case.
Drive of the current working directory
This takes the full current working directory and trims it down to the first two characters, which will be a drive letter and a colon, e.g.
C:
.Drive of the batch file itself
This trims the full path of the batch file (in
%0
) to just a drive letter and a colon, e.g.C:
.(this is an expanded version of my rejected edit to Kai K's answer)
如果从 .CMD/.BAT 文件内部运行,您可以使用
%~dp0
获取当前/工作目录。这个更安全一些,因为它知道 UNC 路径等。该变量语法的参考位于此处。If run from inside a .CMD/.BAT file, you can use
%~dp0
to get the current/working directory. This one is a little safer as it is aware of UNC paths and such. Reference for the syntax of that variable is available here.您可以使用此功能找到任何驱动器中的所有 USB 驱动器盘符。
You can find all USB drive letters from any drive with this.
这将为您提供格式为
C:
的当前驱动器,即当前工作目录中的前 2 个字符This will give you the current drive in the format
C:
, i.e. first 2 chars from the current working directory非常感谢@Sparky3489,如果我只有一个USB闪存驱动器,我将其放入您的算法中,紧接着
我还将标识符的措辞更改为
然后,之后,{和外部}算法,我可以添加闪存Drive Path比如...
然后通过设置其他Path
例如,
我可以为闪存驱动器制作一个批处理文件备份(可以通过 Windows 快捷方式在快速启动窗口中使用相关图标进行调用 ~ 如果对我所说的内容有疑问,请搜索“快速启动”) 。
Thanks Very Much @Sparky3489, if I have just one USB Flash Drive, I put this within your Algorithm, Right After the
I also changed the Wording of the Identifier to
Then, After, {and Outside} the Algorithm, I can add the Flash Drive Path such as...
Then by setting up other Paths
Such as
I can make an Batch File BackUp For the Flash Drive, (can be Called Via Windows Short-Cut with an Associated Icon in your Quick Launch Window ~ Search "Quick Launch", if in Doubt to what I'm Talking About).
就像其他人所说的
%~d0
没有必要再重复一遍,但是如果您偶然发现了这个线程,那么这将 cd 到批处理文件的目录。
另外,如果您想从另一个驱动器(例如
Z:
)运行批处理文件,那么这个就可以做到。Like others have said
%~d0
There's no point in going over that again, but if you have stumbled into this thread then this will cd to the directory of the batch file.
Also if you want to run a batch file from another drive such as
Z:
then this one will do that.