Передача змінних з пробілом до командного рядка як адміністратора


0

сильний текстовий скрипт.bat розміщений у папці sendTo (файл встановлений як адміністратор із властивостей -> розширений -> запустити як адміністратор)

@echo off

cd %~dp1

echo %~dp1

echo "%~1"

pause

якщо я передаю параметри до цього файлу правою кнопкою миші -> sendto -> script.bat, наприклад, файл superuser acc.txt скрипт, працює, але якщо я запускаю скрипт як адміністратор , cmd windows показується на секунду і не працюйте.

Як я можу запустити цей скрипт як адміністратор? після цього фрагмента коду є команда, яка вимагає права адміністратора.

редагувати №1. Я думаю, що проблема пов’язана з ім'ям файлу або іменем шляху з пробілом всередині, як "c: \ шлях до космосу \" або "файл з пробілом.txt", і запущений сценарій як адміністратор.

Відповіді:


0

Створіть ярлик до пакетного файлу в shell:sendtoпапці та змініть його властивості так:

  • клацніть правою кнопкою миші -> «Властивості» -> Shortcutвкладка;
  • Ціль -> cmd /C "D:\bat\SU\931003.bat";
  • Advanced кнопка -> Запустити як адміністратор.

Зверніть увагу, що перший echo "%CD%"у наступному фрагменті коду показує початковий робочий каталог вашого сценарію ( "C:\Windows\system32"якщо він запускається за допомогою SendToфункції):

==>type D:\bat\SU\931003.bat
@echo off
echo initial working directory "%CD%"
pushd "%~dp1"
echo current working directory "%CD%"
echo paramer #1 supplied "%~1"
echo all paramers %*
net session
pause

пакетний ярлик у папці SendTo (запускається як адміністратор)

Вибірка зразка

initial working directory "C:\Windows\system32"
current working directory "D:\bat\1 & 2"
paramer #1 supplied "D:\bat\1 & 2\931003 test.txt"
all paramers "D:\bat\1 & 2\931003 test.txt" "D:\bat\1 & 2\batchfile.bat"
There are no entries in the list.

Press any key to continue . . .

Вище показано:

  • працює зі злегка незвичним шляхом та назвою файлу, що містить не лише пробіли, але навіть &символ амперсанда ...
  • працює як адміністратор, інакше net sessionкоманда повертає System error 5 has occurredта Access is deniedповідомляє про помилки.

привіт, я спробував твій код. Якщо у мене є ім’я файлу o, наприклад, "довгий шлях" з простором всередині, з перевіреним адміністратором параметром, не працюйте. пакетний сценарій знаходиться в d: \ batch \ run.bat, моя ОС знаходиться в c:
Frontender

Важливо : ваша мета ярлика shell:SendToмає бути в папці cmd /C d:\batch\run.bat(зауважте, що вікна C:\Windows\System32\cmd.exe /C d:\batch\run.batApply
переведуть

велике спасибі, здається, працює зараз. мені довелося знайти проблему. Якщо ім'я довідника зі скриптом .bat виглядає як "пакетний сценарій всередині", сценарій не працює. Це не справжня проблема, просто використовуйте просто назву на кшталт "партія".
Frontender

0

Ви можете використовувати команду runas наступним чином:

runas /user:username program

Ви також можете використовувати щось на зразок elevate , утиліту UAC Elevation Utility командного рядка, спеціально для команди, яка потребує привілеїв адміністратора:

elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.