我想创建几个批处理文件来自动化一个程序。
我的问题是,当我创建批处理文件时,当前目录是什么? 它是文件所在的目录,还是命令提示符中显示的相同目录,还是其他什么?
我想创建几个批处理文件来自动化一个程序。
我的问题是,当我创建批处理文件时,当前目录是什么? 它是文件所在的目录,还是命令提示符中显示的相同目录,还是其他什么?
当前回答
它是运行命令以执行批处理文件的目录。
正如上面的答案所提到的,你可以在你的脚本中添加以下命令来验证:
> set current_dir=%cd%
> echo %current_dir%
其他回答
假设您正在打开当前目录中的一个文件。命令如下:
start %cd%\filename.filetype
我希望我回答了你的问题。
在批处理文件中:
%cd%指当前工作目录(变量) %~dp0表示批处理文件目录的完整路径(静态) %~dpnx0和%~f0都是批处理目录和文件名的完整路径(静态)。
请参见:%~dp0是什么意思,它是如何工作的?
它是运行命令以执行批处理文件的目录。
正如上面的答案所提到的,你可以在你的脚本中添加以下命令来验证:
> set current_dir=%cd%
> echo %current_dir%
% __cd__ %, % cd %, %= c:%
还有另一个动态变量%__CD__%指向当前目录,但与%CD%不同,它在末尾有一个反斜杠。 如果您想将文件追加到当前目录,这可能很有用。此外,%CD%在禁用扩展环境下不工作,但%__CD__%总是工作。
使用%=C:% %=D:%,您可以访问对应驱动器的最后一次访问目录。如果这个变量没有定义,那么您还没有访问当前cmd会话上的驱动器。
%__APPDIR__%展开到运行当前脚本的可执行文件,也就是cmd.exe目录。
在批处理文件中,%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"