从批处理文件所在的目录位置启动批处理文件命令提示符

Ste*_*e H 3 windows batch-file

我正在编写一个批处理文件,它使用其父目录中的一些文件(比如说Folder1).

C:\User\Steve\Foder1\
Run Code Online (Sandbox Code Playgroud)

现在我想让整个Folder_1可重定位,以便我可以将文件夹复制粘贴到我/他人的计算机上的任何位置并运行批处理脚本.

D:\User\Random_guy\Folder1\
Run Code Online (Sandbox Code Playgroud)

问题是如何启动批处理文件的命令提示符(D:\ User\Random_guy\Folder1)它的父目录而不编写另一个批处理脚本来执行此操作.

Nat*_*man 5

启动批处理文件:

pushd %~dp0
Run Code Online (Sandbox Code Playgroud)

这会将当前目录设置为包含批处理文件的文件夹.然后在批处理文件中,确保所有路径都相对于当前目录.

但是,如果批处理文件在执行过程中更改为其他目录,并且您仍希望能够在不知道确切路径的情况下引用批处理的主文件夹内容,请使用与%~dp0文件路径相同的文件.你想用.例如,FileA来自与批处理文件相同的文件夹中的a将被称为

"%~dp0FileA"
Run Code Online (Sandbox Code Playgroud)

注意\之前没有a FileA.这是因为%~dp0已经包含尾随\,所以整个事情将评估到正确的路径.(虽然如果你确实添加了另一个反斜杠,"%~dp0\FileA"它也可以正常工作,因为Windows在路径中间通常会忽略多个连续的反斜杠.)