2013-05-20 18 views
-6

一个批处理文件:当我尝试运行该如何运行xp_cmdshell的

exec master..xp_cmdshell 'C:\f\alert.bat' 

我收到以下错误信息:

'C:\f\alert.bat' is not recognized as an internal or external command, 
operable program or batch file. 

我如何使用运行xp_cmdshell这个批处理文件?

编辑:上面的命令是逐字。我没有使用任何有空格的参数。

+2

可能的重复http://stackoverflow.com/questions/3759331/escaping-command-parameters-passed-to-xp-cmdshell-to-dtexec – billinkc

+0

@billinkc从我能看到的问题的答案说,使用DOS 8.3的命名约定,正如你所看到的,我已经在做。我看到有两个人对你的评论投了赞成票,虽然这让我相信也许我错过了一些非常明显的东西。如果是这样,请你指出一下吗? –

+2

我的假设是,在编辑之前,'C:\ f \ alert.bat'是实际命令的存根。如果在我的xp_cmdshell调用中有空白,我可以重现您的错误消息。亲自查看一下'exec master..xp_cmdshell'C:\ f \ alert.bat''我可以改变C:\ f c:\ DoesNotExist,只要有空格,就会返回“not recognized”错误信息。对此的解决方案是使用8.3命名约定或双引号 - 这两个都在参考问题中进行了演示。 – billinkc

回答

-4

我有几台服务器在运行,我试图从远程服务器而不是本地服务器运行这个命令。所以我得到这个错误,因为批处理文件显然不存在于远程服务器上。

+2

糟糕的是你没有发布你得到的实际错误信息。 ''C:\ f \ alert.bat'不被识别为内部或外部命令,可操作程序或批处理文件。“我实际上做了一些测试以找出你所看到的,但是我无法重新创建你发布的错误你发布的命令。 –

+0

@MikaelEriksson有时,如果我不得不从一台计算机以外的计算机访问SO,那么显然,我会输入错误消息而不是复制/粘贴它。唯一的区别是真实的消息是'C:\ f \ alert.bat',而不是'alert.bat'。我倾向于想知道这是否真的让你失望,或者你是否试图在我的问题上挑选。 –

+0

你为什么这么想?我们有没有在我冒犯你的地方回答或评论过你的另一个问题?我知道我有时可能有点直接,所以如果是这样,我真的很抱歉。 –

相关问题