我能够以管理员身份运行.bat(运行位于同一目录中的.exe):我右键单击bat文件并选择"以管理员身份运行" 。
为了能够做到这一点,我使用了以下答案:Run exe from current directory in batch
以下是代码:
@echo off
:A
cls
echo This will start the program.
pause
cd %~dp0
start %1myprogram.exe
exit
但是,只有.bat文件和程序在系统驱动器中时才会起作用。
因为,例如,如果它们是在pendrive中,我右键单击并选择"以管理员身份运行",我收到错误:
" Windows无法找到' myprogram.exe'。确保您已正确输入名称,然后重试。"
为什么会发生这种情况,我该如何解决? 我认为通过使用 cd%~dp0 ,它总是指向bat .file所在的文件夹。
提前致谢。
答案 0 :(得分:1)
<强>解决方案强>
将 cd%~dp0 更改为 cd / d%~dp0
<强>解释强>
当您使用管理员权限运行某些内容时,工作目录将更改为:
&#39; C:\ Windows \ System32下&#39;
虽然%~dp0仍指向驱动器和包含批处理文件的目录,但cd%~dp0不起作用,因为它只更改目录,但保留在同一驱动器上。
使用/ d参数,您也可以告诉cd-command更改驱动器。
答案 1 :(得分:1)
你可能需要告诉cd也改变驱动器:
cd /d %~dp0
答案 2 :(得分:0)
如果当前驱动器是C :(例如,提示符为C:\>
),并且您执行CD D:\FOO
,则驱动器D:上的当前目录设置为\ FOO,但您仍将是“上”驾驶C:。请尝试以下方法:
@echo off
:A
cls
echo This will start the program.
pause
cd %~dp0
%~d0
start %1myprogram.exe
exit
(另外,为什么%1myprogram.exe
而不仅仅是myprogram.exe
,甚至只是myprogram
?如果您右键单击批处理文件来运行它,那么就没有了成为%1
。)