2016-05-12 2 views
2

Я пытался создать пакетный файл для преобразования файлов в каталог. Справочник предоставляется через этот код:Пакетный файл работает по-разному, если работает в режиме администратора

@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:, которые создаются подстанцией ,

Любая идея, как решить эту проблему? Спасибо

ответ

3

Процессы с нормальным и повышенным уровнем («запускать как администратор») не разделяют отображения дисков (по умолчанию) или subst d. Если вы запускаете процесс в повышенном контексте, вам придется сопоставить диски там или сопоставить их в повышенном контексте (например, запустить cmd.exe в качестве администратора), прежде чем пытаться запустить целевой скрипт.

Ссылка: Some Programs Cannot Access Network Locations When UAC Is Enabled

1

Когда вы запускаете как администратор, текущий каталог - это не то, что вы думаете! Просто добавьте эти строки в начало файла летучей мыши, чтобы доказать самому себе:

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

Так что вам нужно сделать, это добавить эту строку в файл летучей мыши, прежде чем вы ссылаться на какие-либо файлы/папки, я обычно положить его рядом начало.

pushd %~dp0 

Это также будет работать должным образом при запуске с подключенного сетевого диска.

+0

Это относится и полезная информация, но я не вижу, как это относится к вопросу. –

 Смежные вопросы

  • Нет связанных вопросов^_^