我正在尝试创建一个快捷方式,它将在runas命令下加载vcvarsall.bat(Visual Studio命令提示符)。具体来说,我想要一个从特定文件夹开始的快捷方式;将runas网络凭据设置为域帐户;主要本地帐户亲和力;并正确设置了msbuild环境变量。
背景:我们拥有不在域上的团队城市构建代理。偶尔,我需要对它们进行故障排除。这意味着在团队城市本地帐户下运行构建,使用域帐户从源获取。在家工作时我也有相同的情况 - 我的家用电脑不在域内。
我可以使用runas.exe来获取正确的凭据,但我没有得到msbuild环境变量。
%SystemRoot%\system32\runas.exe /netonly /user:domain\teamcityagent "%comspec% /k
如果按照快捷方式加载环境变量并在文件夹中设置start,我会得到环境变量和工作文件夹,但是我必须输入每个tfs命令的凭据。
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86
如何将这两者合并为一个快捷方式?这里适用的命令引用规则是什么?你能在快捷方式中连接命令吗?没有批处理文件这样做是最酷的,但如果我不得不退回批处理文件,我会这样做。
答案 0 :(得分:2)
您可以使用&&
执行多个单独的命令。只有前一个命令成功(即错误级别0)才会执行连续命令。如果要强制执行所有命令,只需使用一个&
。
%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%"