如果以pipe理员模式运行batch file,则工作方式不同

我一直在尝试创buildbatch file来转换目录中的文件。 该目录是通过这个代码给出的:

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

它运作良好 – 通常。 不过,因为我以后考虑过使用环境variables,所以我也试着以pipe理员身份运行它。 但是 – 问题是,当我正常运行,它需要目录,脚本继续没有问题。 当我更多地在pipe理员中运行时,它充当“目录不存在”

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

任何想法如何解决这个问题? 谢谢

Solutions Collecting From Web of "如果以pipe理员模式运行batch file,则工作方式不同"

正常和提升(“以管理员身份运行”)进程不共享驱动器映射(默认情况下)或子驱动器。 如果您在提升的环境中运行进程,则必须在尝试启动目标脚本之前,将驱动器映射到此处或将其映射到提升的环境中(例如,以管理员身份运行cmd.exe)。

参考: 启用UAC时,某些程序无法访问网络位置

当您以“管理员身份运行”时,当前目录不是您的想法! 只要将这些行添加到bat文件的开始部分就可以证明这一点:

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

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

 pushd %~dp0 

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