命令提示符执行命令与批处理文件和Visual Studio构建后脚本

时间:2016-02-05 05:32:23

标签: visual-studio batch-file cmd command-prompt net-use

我正在尝试运行Visual Studio中的后期构建脚本,以便我们可以更轻松地进行远程部署。在此脚本的早期(您在此处未看到),我们在下面的网络使用执行中对用户进行了硬编码。所以我们在这里所做的就是让用户输入要部署到的服务器名称和数据库,然后连接到该服务器的网络共享。

我发现虽然以下代码只有在使用命令提示符运行时才能正常工作。它打开一个新窗口,让用户放入服务器和数据库,然后net use命令将在同一窗口中正确显示用户输入的服务器。

如果您尝试在批处理文件或Visual Studio中使用它,net use命令会显示服务器名称的空白。

我感谢任何人可能对此有任何见解!

START CMD /C "CALL SET /P SERVERNAME=Please Enter The Server Name: & CALL SET /P DATABASE=Please Enter The Database Name: & CALL CMD /C net use \\%SERVERNAME%\d$ /persistent:no * /user:%user%"

1 个答案:

答案 0 :(得分:0)

按照@bgalea的建议。 %user%定义在哪里?你的意思是%username%?当然,如果您计划稍后由构建代理完成构建,则此方案将不起作用。

它不起作用的原因是变量在加载时扩展。因此,在加载行时展开%SERVERNAME%...在用户输入值之前。尝试改为:

SETLOCAL ENABLEDELAYEDEXPANSION SET /P SERVERNAME=Please Enter The Server Name: & SET /P DATABASE=Please Enter The Database Name: & \\!SERVERNAME!\d$ /persistent:no * /user:%username%"

这样您将使用SERVERNAME的运行时值。