【问题标题】:Batch file working differently if ran in administrator mode如果在管理员模式下运行,批处理文件的工作方式会有所不同
【发布时间】:2016-09-08 00:24:46
【问题描述】:

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

@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: 驱动器上的位置正常工作,此问题出现在由 subst 制造的 O: 和 P: 驱动器上。

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

【问题讨论】:

    标签: windows batch-file administrator


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      pushd %~dp0
      

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

      【讨论】:

      • 这是真实而有用的信息,但我不明白这如何适用于这个问题。
      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多