Возьмем мучительно простой командный файл:
echo hi
pause
Сохраните это как test.bat. Теперь сделайте ярлык для test.bat. Ярлык запускает пакетный файл, который печатает «привет», а затем ожидает нажатия клавиши, как и ожидалось. Теперь добавьте некоторый аргумент к цели ярлыка. Теперь у вас есть ярлык:
%path%\test.bat some args
Ярлык запускает пакетный файл, как и раньше.
Теперь запустите ярлык от имени администратора. (Кстати, это в Windows 7.) Вы можете либо щелкнуть правой кнопкой мыши -> «Запуск от имени администратора», либо перейти к свойствам ярлыка и установить флажок в расширенном разделе. Скажите UAC, что все в порядке, и ярлык снова запустит пакетный файл, как и ожидалось.
Теперь измените аргументы в цели ярлыка, чтобы добавить двойные кавычки:
%path%\test.bat "some args"
Теперь попробуйте ярлык от имени администратора. На этот раз не работает! Командное окно всплывает и исчезает слишком быстро, чтобы увидеть какую-либо ошибку. Я попытался добавить > test.log 2>&1 в ярлык, но в этом случае журнал не создается.
Попробуйте запустить тот же ярлык (с двойными кавычками), но не от имени администратора. Он отлично запускает командный файл. Таким образом, похоже, что такое поведение связано не с параметрами в двойных кавычках и не с тем, что он запускается от имени администратора. Какое-то странное сочетание этих двух вещей.
Я также попытался запустить ту же команду из командного окна администратора. Это запустило пакетный файл, как и ожидалось, без ошибок. Запуск ярлыка из командного окна породил новое командное окно, которое вспыхнуло и исчезло. Таким образом, очевидно, проблема вызвана комбинацией администратора, ярлыка и двойных кавычек.
Я в полном тупике, кто-нибудь знает, что происходит? Я также хотел бы обходной путь.
%path%\test.bat "some args"
. что ты видел? - person ghostdog74   schedule 23.03.2010