如何从pendrive运行.bat(运行与同一目录中的.exe)作为管理员?

时间:2017-06-08 12:31:43

标签: windows batch-file cmd

我能够以管理员身份运行.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所在的文件夹。

提前致谢。

3 个答案:

答案 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。)