这是一个最小的批处理文件demo.bat
,来说明我的问题:
@ECHO off
set /p foo=Enter foo:
echo.
echo you typed "%foo%"
sqlcmd -?
set /p bar=Enter bar:
echo.
echo you typed "%bar%"
foo.txt
我有一个看起来像这样的输入文件:
foo_value bar_value
我将批处理文件作为demo.bat < foo.txt
. 输出是:
输入 foo: 你输入了“foo_value” Microsoft (R) SQL Server 命令行工具 版本 9.00.3042.00 NT 英特尔 X86 版权所有 (c) 微软公司。版权所有。 用法:sqlcmd [-U登录id] [-P密码] (...ETC...) 输入栏: 你输入了“foo_value”
如果我删除sqlcmd -?
, 那么 bar 被“键入”为bar_value
,这是我最初所期望的。
所以,在我看来,sqlcmd
使用不适合它的标准输入以某种方式表现不佳。有人对我如何解决它有任何好主意吗?在一个完美的世界中,该解决方案不会涉及更改原始批处理文件,或涉及安装第三方包来驱动交互(例如,Expect)。