Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在批处理文件中使用sqlcmd_Batch File_Parameters_Sqlcmd - Fatal编程技术网

Batch file 在批处理文件中使用sqlcmd

Batch file 在批处理文件中使用sqlcmd,batch-file,parameters,sqlcmd,Batch File,Parameters,Sqlcmd,我已经搜索了StackOverflow几个小时,并尝试了针对类似问题的不同建议,但到目前为止没有正确传递参数(双引号,^) 以下是它的简短版本: @echo off cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\ start /w "sqlcmd" sqlcmd.exe -S DBserverName -U username -P p@ssword -i C:\query.sql -s"

我已经搜索了StackOverflow几个小时,并尝试了针对类似问题的不同建议,但到目前为止没有正确传递参数(双引号,
^

以下是它的简短版本:

@echo off
cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\
start /w "sqlcmd" sqlcmd.exe -S DBserverName -U username -P p@ssword -i C:\query.sql -s"," | findstr /V /C:"-" /B >c:\output.csv
基本上,我想传递一个包含分隔符的相当长的参数。但我看到这种情况发生的唯一方式是使用参数。我想让它尽可能简单。这是唯一的办法吗?你能举个例子说明这是如何工作的吗


提前谢谢。

我不确定这是否重要,但我认为
-s
之间应该有一个空格,“

但更重要的是,您的管道构造是错误的。sqlcmd命令正在一个新窗口中运行,但是管道正在原始窗口中查找START命令本身的输出,并且没有任何输出

通过转义管道和重定向,可以使命令正常工作

@echo off
cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\
start /w "sqlcmd" sqlcmd.exe -S DBserverName -U username -P p@ssword -i "C:\query.sql" -s "," ^| findstr /V /C:"-" /B ^>"c:\output.csv"
但根本不需要使用START。您的脚本可以直接执行sqlcmd,而且一切都简单得多

@echo off
cd C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\
sqlcmd.exe -S DBserverName -U username -P p@ssword -i "C:\query.sql" -s "," | findstr /V /C:"-" /B >"c:\output.csv"

根据使用的字符,您的密码也可能会遇到问题。您可能需要引用和/或转义密码,sqlcmd.exe可能有自己的转义规则。如果是这样的话,那么您可能需要担心cmd.exe和sqlcmd.exe的转义。

这一行应该在整个路径上有双引号,在某些情况下这很重要

cd C:\Program Files(x86)\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\

start命令在开头需要双引号,因为它将第一个集合作为窗口标题

start "" /w ....

忘了提到一个显而易见的问题:从命令行来看,带有参数的sqlcmd可执行文件工作正常。你能解释清楚,出了什么问题吗?恩多,德本哈姆对我的简单疏忽进行了评论。我不敢相信我被困在了用start运行它的想法上(我猜是ID10T错误)。按照第二条建议直接运行,运行良好。再次感谢。我不认为Start命令的开关/标题顺序有什么不同,但是dbenham的回答很好。谢谢你的输入。我没有注意到第一个引用的部分是一个标题。我有罪。