Batch file 创建一个检测自己文件路径的批处理

Batch file 创建一个检测自己文件路径的批处理,batch-file,directory,detect,filepath,Batch File,Directory,Detect,Filepath,我需要制作一个批处理文件,检测它所在的驱动器和目录。当我正常运行文件时,它已经在正确的目录/驱动器中。但当它以管理员身份运行时,它会在system32中启动。是否有一个命令指向批处理来自的目录或驱动器?好的解决方法是在路径之前使用\来给出绝对路径 因此,如果您需要运行一个文件c:\temp\xyz.exe,并且即使您在目录c:\winodws\system32中,当您执行cd\temp\xyz.exe时,该文件仍将正常运行那么解决方法是在路径之前使用\ 因此,如果您需要运行一个文件c:\temp

我需要制作一个批处理文件,检测它所在的驱动器和目录。当我正常运行文件时,它已经在正确的目录/驱动器中。但当它以管理员身份运行时,它会在system32中启动。是否有一个命令指向批处理来自的目录或驱动器?

好的解决方法是在路径之前使用
\
来给出绝对路径


因此,如果您需要运行一个文件
c:\temp\xyz.exe
,并且即使您在目录
c:\winodws\system32
中,当您执行
cd\temp\xyz.exe
时,该文件仍将正常运行

那么解决方法是在路径之前使用
\

因此,如果您需要运行一个文件
c:\temp\xyz.exe
,即使您在目录
c:\winodws\system32
中,当您执行
cd\temp\xyz.exe
时,该文件仍将正常运行

您可以使用

Pushd "%~dp0"
这会将当前目录更改为批处理文件的路径。
引用参数可以防止路径名中的特殊字符,如“C:\Documents&Settings”

您可以使用

Pushd "%~dp0"
这会将当前目录更改为批处理文件的路径。

引用该参数可以避免路径名中的特殊字符,如“C:\Documents&Settings”

希望我能向上投票两次。一次是关于
%~dp0
的正确答案,另一次是建议
pushd
。这是一个未充分使用的命令,我总是觉得在自动化批处理中使用
cd
是错误的:-)谢谢,但这是一个非常简单的答案。但是你是对的,这是一个未充分使用的命令,即使在我自己使用的脚本中,我也在尝试编写批处理,这样(至少在成功的情况下)调用环境就不重要了,并且会像批处理未执行一样被恢复。这意味着
setlocal
pushd
非常方便。不过,这可能只是我的一个习惯;)非常感谢,它适用于c:和其他驱动器上的两个目录。希望我能投票两次。一次是关于
%~dp0
的正确答案,另一次是建议
pushd
。这是一个未充分使用的命令,我总是觉得在自动化批处理中使用
cd
是错误的:-)谢谢,但这是一个非常简单的答案。但是你是对的,这是一个未充分使用的命令,即使在我自己使用的脚本中,我也在尝试编写批处理,这样(至少在成功的情况下)调用环境就不重要了,并且会像批处理未执行一样被恢复。这意味着
setlocal
pushd
非常方便。不过,这可能只是我的一个习惯;)非常感谢,它适用于c:和其他驱动器上的两个目录。