0

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

我发现,只有在使用命令提示符运行以下代码时,它才能正常工作。它打开一个新窗口,让用户输入服务器和数据库,然后 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%"
4

1 回答 1

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 的运行时值。

于 2016-02-05T09:54:58.937 回答