如果 运行 在管理员模式下,批处理文件的工作方式不同

Batch file working differently if ran in administrator mode

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

@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 
) 

它运行良好 - 正常。但是,因为我后来考虑过使用环境变量,所以我也尝试 运行 以管理员身份对其进行设置。但是 - 问题是,当我 运行 它正常时,它占用目录,脚本继续没有问题。当我在administrator more 运行时,它充当"Directory does not exist"

它在 C: 和 D: 驱动器上的位置正常工作,这个问题出现在 O: 和 P: 驱动器上,它们是由 subst 制作的。

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

当你'Run as administrator'当前目录不是你想的那样!只需将这些行添加到您的 bat 文件的开头即可向您自己证明这一点:

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

因此,您需要做的是在引用任何内容之前将此行添加到您的 bat 文件中 files/folders 我通常将其放在开头附近。

pushd %~dp0

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

正常和提升的 ("run as administrator") 进程不共享驱动器映射(默认情况下)或 substd 驱动器。如果您 运行 处于提升的上下文中的进程,则必须在尝试之前将驱动器映射到那里或将它们映射到提升的上下文中(例如 运行 cmd.exe 作为管理员)启动目标脚本。

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