如何找到一个批处理文件的当前目录下,然后用它的路径?(How do I find the curre

2019-09-01 06:39发布

我有我打算分发给我们的客户能够运行一个软件编写一个批处理文件。

我们分发它们作为一个文件夹或.zip里面的文件。 里面有批处理文件,并运行该批处理所需的文件的文件夹。

通常情况下,当你做一个批处理,您键入的文件的路径。 但我不知道在哪里的文件。 该文件将仍然保持主文件夹里面,但我需要有批量发现该文件夹运行文件。

因此,例如:如果他们桌面上的文件夹高手,他们运行它,它需要是这样的"C:\Users\Username\Desktop"来运行。 您将有一批CD到该位置。

但是,如果他们从文档上运行哪些呢? 我不知道用户名,所以我必须以某种方式已批量发现这一点。 任何代码和/或指令将是巨大的。

Answer 1:

有没有必要知道这些文件,因为当你启动一个bat文件的工作目录是它推出(以下简称“主文件夹”),所以如果你有这种结构的目录:

.\mydocuments\folder\mybat.bat
.\mydocuments\folder\subfolder\file.txt

而且用户启动“mybat.bat”,工作目录,所以你只需要在你的脚本写的子文件夹命名为“\我的文档\文件夹中。”:

@Echo OFF
REM Do anything with ".\Subfolder\File1.txt"
PUSHD ".\Subfolder"
Type "File1.txt"
Pause&Exit

总之,工作目录保存在“%CD%”的变量,如果你想知道你可以做任何一台计算机上的工作目录,其中蝙蝠的启动目录存储在参数0,然后:

@Echo OFF
Echo Launch dir: "%~dp0"
Echo Current dir: "%CD%"
Pause&Exit


Answer 2:

ElektroStudios答案是有点误导。

“当你推出一个bat文件的工作目录是它推出的DIR”这如果用户点击了浏览器中的批处理文件是真实的。

但是,如果脚本使用CALL命令其他脚本调用,当前的工作目录不会改变。

因此,你的脚本中,最好是使用%〜dp0subfolder \ FILE1.TXT

另请注意,%〜DP0将用反斜杠结束时,当前脚本不在当前工作目录。 因此,如果你需要的目录名称末尾没有反斜杠,你可以使用类似

call :GET_THIS_DIR
echo I am here: %THIS_DIR%
goto :EOF

:GET_THIS_DIR
pushd %~dp0
set THIS_DIR=%CD%
popd
goto :EOF


Answer 3:

你也可以做

 Pushd "%~dp0"

这也需要从UNC路径考虑运行。



Answer 4:

尝试在yourbatch

set "batchisin=%~dp0"

这应该设置变量到您的批处理的位置。



文章来源: How do I find the current directory of a batch file, and then use it for the path?