右键单击并使用以管理员身份运行时,%CD%变量行为会有所不同

时间:2010-07-13 13:29:42

标签: windows batch-file cmd

我有一个使用%CD%环境变量的Windows cmd文件来确定cmd文件的执行目录。

当我从命令行运行cmd文件时,它可以正常工作,这意味着%CD%变量包含工作目录。如果我双击左键单击cmd它也可以正常工作。但是,如果我右键单击cmd文件并选择runas administrator,则%CD%变量包含值“C:\ Windows \ system32”而不是cmd正在执行的curent目录。

我能够使用以下脚本重现该问题:

echo %CD%
pause

2 个答案:

答案 0 :(得分:11)

尝试使用%~dp0而不是%cd% ...这应该会为您提供包含批处理(NT shell)脚本的目录。

答案 1 :(得分:3)

您是否将工作/当前目录与批处理文件所在的目录混淆?

如果我有一个只有

的简单批处理文件
@echo off
echo %cd%

并存储在c:\ foo \ bar \ test.cmd

在cmd中我执行

cd c:\foo
bar\test

test.cmd将打印c:\foo而非c:\foo\bar

我假设UAC使用system32,因为可以使用不同的用户进行提升,并且该用户可能无权访问当前目录。

如果您想要批处理文件所在的目录,请使用%~dp0,如果您需要当前目录,请使用。或%CD%