Создание ярлыка для runas / netonly и vsvarsall.bat. Какие правила цитирования использовать? - PullRequest
0 голосов
/ 04 ноября 2010

Я пытаюсь создать ярлык, который будет загружать vcvarsall.bat (командная строка Visual Studio) под командой runas.В частности, я хочу ярлык, который начинается в определенной папке;имеет сетевые учетные данные runas для учетной записи домена;связь с локальным счетом в сети;и переменные окружения msbuild установлены правильно.

Предыстория: у нас есть агенты по сбору командных городов, которых нет в домене.Иногда мне нужно их устранить.Это означает запуск сборки под локальной учетной записью команды city, получение из источника с использованием учетной записи домена.У меня также есть такой же сценарий при работе из дома - мой домашний компьютер не находится в домене.

Я могу использовать runas.exe для получения правильных учетных данных, но я не получаю переменные среды msbuild.

%SystemRoot%\system32\runas.exe /netonly /user:domain\teamcityagent "%comspec% /k 

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

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86

Как я могу объединить эти два в один ярлык?Какие правила цитирования команд применяются здесь?Можете ли вы объединить команды в ярлык?Было бы круто сделать это без командного файла, но если мне придется прибегнуть к пакетному файлу, я сделаю это.

1 Ответ

2 голосов
/ 04 ноября 2010

Вы можете выполнить несколько отдельных команд, используя &&.Последовательные команды будут выполняться только в случае успеха предыдущей (т. Е. Уровень ошибки 0).Если вы хотите принудительно выполнить все команды, просто используйте один &.

, например, напечатав "foo" и "bar", затем сделайте паузу

%comspec% /c echo foo && echo bar && pause

Однако в вашем случаепри использовании runas вам необходимо заключить всю команду и аргументы команды в двойные кавычки.Любые двойные кавычки в аргументах должны быть экранированы обратной косой чертой.Другие обратные слеши должны интерпретироваться правильно, без необходимости экранирования.Чтобы запустить другого пользователя с загруженными переменными при печати приветствия, вы можете сделать следующее:

%SystemRoot%\system32\runas.exe /netonly /user:domain\teamcityagent "%comspec% /k \"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat\" x86 && echo Hello %USERDOMAIN%\%USERNAME%"
...