如果以管理员模式运行,批处理文件的工作方

时间:2016-05-12 09:12:23

标签: windows batch-file administrator

我一直在尝试创建用于转换目录中文件的批处理文件。该目录通过以下代码提供:

@echo off

rem // setting input directory
:input1
set/p "inputdir=Input directory: "

rem // if input is invalid, prompt again
if not exist "%inputdir%" (
echo Directory does not exist.
echo "%inputdir%"
goto input1 
) 

效果很好 - 通常。但是,因为我之后考虑过使用环境变量,所以我也尝试以管理员身份运行它。但是 - 问题是,当我正常运行时,它需要目录,脚本继续没有问题。当我在管理员中运行更多时,它将充当“目录不存在”

它适用于C:和D:驱动器上的位置,这个问题出现在O:和P:驱动器上,由subst制作。

知道如何解决这个问题吗? 谢谢

2 个答案:

答案 0 :(得分:3)

正常和提升(“以管理员身份运行”)进程不共享驱动器映射(默认情况下)或subst d驱动器。如果在提升的上下文中运行进程,则在尝试启动目标脚本之前,必须将驱动器映射到那里或在提升的上下文中映射它们(例如,以管理员身份运行cmd.exe)。

参考:Some Programs Cannot Access Network Locations When UAC Is Enabled

答案 1 :(得分:1)

当您以管理员身份运行时#39;当前目录不是你的想法!只需将这些行添加到bat文件的开头即可向自己证明:

@echo off
echo(CD=%CD%
pushd %~dp0
echo(CD=%CD%
pause

所以你需要做的就是在引用我通常把它放在开头附近的任何文件/文件夹之前将这一行添加到你的bat文件中。

pushd %~dp0

从映射的网络驱动器运行时,这也可以正常工作。

相关问题