Batch file 批处理文件中的当前目录是什么?

Batch file 批处理文件中的当前目录是什么?,batch-file,directory,Batch File,Directory,我想创建几个批处理文件来自动化程序 我的问题是,当我创建批处理文件时,当前目录是什么? 它是文件所在的目录,还是与命令提示符中显示的目录相同,还是其他目录?它是启动批处理文件的目录。例如,如果您的批处理位于c:\dir1\dir2中,并且您确实运行了cd c:\dir3,那么运行批处理时,当前目录将是c:\dir3它通常是批处理文件启动的目录,但是如果您从快捷方式启动批处理文件,则可以提供不同的启动目录。此外,当您在cmd中,并且当前目录为c:\dir3,您仍然可以使用c:\dir1\dir2\

我想创建几个批处理文件来自动化程序

我的问题是,当我创建批处理文件时,当前目录是什么?
它是文件所在的目录,还是与命令提示符中显示的目录相同,还是其他目录?

它是启动批处理文件的目录。例如,如果您的批处理位于
c:\dir1\dir2
中,并且您确实运行了
cd c:\dir3
,那么运行批处理时,当前目录将是
c:\dir3

它通常是批处理文件启动的目录,但是如果您从快捷方式启动批处理文件,则可以提供不同的启动目录。此外,当您在cmd中,并且当前目录为
c:\dir3
,您仍然可以使用
c:\dir1\dir2\batch.bat
启动批处理文件,在这种情况下,当前目录将是批处理文件中的
c:\dir3

  • %cd%
    引用(变量)
  • %~dp0
    指批处理文件目录的完整路径(静态)
  • %~dpnx0
    %~f0
    都指批目录和文件名的完整路径(静态)

另请参见:

假设您正在当前目录中打开一个文件。命令是:

 start %cd%\filename.filetype

希望我回答了您的问题。

在批处理文件中,%cd%是当前目录最常用的命令,不过您可以设置自己的变量:

set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)
假设你想打开Myprog.exe。如果它在同一文件夹中,您将使用以下命令:

start %mypath%\Myprog.exe
这将从当前文件夹中打开Myprog

另一个选项是在C中创建一个名为AutomatePrograms的目录。然后,将文件传输到该文件夹,然后可以使用以下命令打开它们:

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"

它是运行命令以执行批处理文件的目录

如上所述,您可以将以下命令添加到脚本中以验证:

> set current_dir=%cd%
> echo %current_dir%  
只要我的2美分。 如果从pendrive上的批处理文件(Windows 7)调用,则以下命令失败:

xcopy /s /e /i %cd%Ala C:\KS\Ala
但这确实起到了作用:

xcopy /s /e /i %~dp0Ala C:\KS\Ala
%\uuuu CD\uuuu%
%CD%
%=C:%
还有另一个动态变量
%\uuuuucd%
指向当前目录,但与
%CD%
类似,它在末尾有一个反斜杠。 如果要将文件附加到当前目录,这将非常有用

使用
%=C:%
%=D:%
可以访问对应驱动器的上次访问目录。如果未定义变量,则您尚未在当前cmd会话中访问驱动器


然后,
%\uuuuu APPDIR\uuuuu%
扩展到运行当前脚本a.k.a.
cmd.exe
目录的可执行文件。

打开bat文件时,bat文件应位于/曾经位于的目录中。但是,如果您想将其放入另一个目录,您可以使用
cd[任何目录]

@pοοö-
%0
可以给出当前子例程的名称,但是
%~dp0
将始终提供执行批处理文件的完整路径。实际上,%dp0给出了执行批处理文件所在目录的完整路径。%~dpnx0(相当于%%f0)给出批处理文件的完整路径。有关更多详细信息,请参阅。另请参阅一个类似问题的详细答案:不幸的是,当作为进程从.net运行时,dp0是工作目录而不是批处理文件目录,这是一个很难解决的问题。更明确的示例是,当右键单击
.cmd
文件并以管理员身份运行时,
%cd%
给出了
C:\WINDOWS\system32
%dp0
给出了带有尾随斜杠的批处理文件目录。正如在这里的顶部答案中所指出的,
%cd%
是可变的,因此从WINDOWS资源管理器以管理员身份运行批处理文件将给出
C:\WINDOWS\system32
,这几乎肯定不是您想要的
%~dp0
更加一致。这是我正在寻找的开关,用于确定没有批处理文件名的bat文件的父目录路径:
%~dp0