我的程序安装了部分SQL Server。这行代码调用setup exe文件。现在,似乎它正在绊倒文件路径中的空间。
这是我的代码:
cmd /c "\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\setup.exe" /configurationfile="\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\Tools\Tools_Original.ini" /IACCEPTSQLSERVERLICENSETERMS
这是错误:
'\\dcsrv1\Software\SQL' is not recognized as an internal or external command,
operable program or batch file.
我尝试将文件路径放在单引号和双引号中,两者都具有相同的结果。我在stackoverflow上看到另一个问题,试着试试'&'在路径之前,但我只是遇到了语法错误。
有一件事是有效的,如果我在本地安装文件(而不是像现在这样在服务器上),我会cd到目录然后cmd /c setup.exe
。不幸的是我必须使用网络文件,我只是觉得这很有趣。
有没有办法将目录更改为网络目录?据我所知,这是不可能的。
答案 0 :(得分:2)
我倾向于使用echo args来查看args传递给命令行的内容。见https://chocolatey.org/packages/echoargs
echoargs "\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\setup.exe" /configurationfile="\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\Tools\Tools_Original.ini" /IACCEPTSQLSERVERLICENSETERMS
这是你所期望的吗?
PS > echoargs "\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\setup.exe" /configurationfile="\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\Tools\Tools_Original.ini" /IACCEPTSQLSERVERLICENSETERMS
Arg 0 is <\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\setup.exe>
Arg 1 is </configurationfile=\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\Tools\Tools_Original.ini>
Arg 2 is </IACCEPTSQLSERVERLICENSETERMS>
我不知道你是否会更好地使用呼叫运算符,而不是炮轰到cmd,我通常会这样做。祝你好运......
& "\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\setup.exe" /configurationfile="\\dcsrv1\Software\SQL 2014 Installs\SQL 2014 Unpacked\Tools\Tools_Original.ini" /IACCEPTSQLSERVERLICENSETERMS