Answers:
在批处理文件中:
%cd%
指当前工作目录(变量)%~dp0
指向批处理文件目录的完整路径(静态)%~dpnx0
并且%~f0
都指向完整路径批目录和文件名(静态)。另请参阅:%〜dp0是什么意思,它是如何工作的?
.cmd
文件并以管理员身份运行时,%cd%
将给批处理文件目录一个斜杠C:\WINDOWS\system32
并%~dp0
给出一个斜杠。
在批处理文件中,%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"
%cd%
是变量,因此以管理员身份从Windows资源管理器运行该批处理文件将给出的C:\WINDOWS\system32
结果几乎肯定不是您想要的。%~dp0
更一致。
这是您启动批处理文件的目录。例如,如果您有批处理,c:\dir1\dir2
并且您正在cd c:\dir3
运行,然后运行批处理,则当前目录为c:\dir3
。
只是我的2美分。如果从放置在pendrive上的批处理文件(Windows 7)中调用,以下命令将失败:
xcopy /s /e /i %cd%Ala C:\KS\Ala
但这可以完成工作:
xcopy /s /e /i %~dp0Ala C:\KS\Ala
%~dp0
%0
可以给当前子程序的名称,但%~dp0
将始终给予充分的路径执行批处理文件。