3

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_value」と入力しました
Microsoft (R) SQL Server コマンド ライン ツール
バージョン 9.00.3042.00 NT インテル X86
Copyright (c) Microsoft Corporation. 全著作権所有。

使用法: Sqlcmd [-U ログイン ID] [-P パスワード]
  (...等...)

バーを入力してください:
「foo_value」と入力しました

を削除するsqlcmd -?と、 bar は として「入力」bar_valueされます。これは、当初期待していたものです。

sqlcmdそのため、意図されていない標準入力でどういうわけかうまく機能していないように見えます。どうすれば回避できるかについて、何か明るいアイデアを持っている人はいますか? 完璧な世界では、ソリューションに元のバッチ ファイルの変更や、相互作用を促進するためのサードパーティ パッケージのインストール (Expect など) は含まれません。

4

2 に答える 2

2

NULをsqlcmdにリダイレクトすることもできます。

sqlcmd -? < NUL

ただし、これにはバッチスクリプトも変更する必要があります。

于 2008-12-05T12:34:34.880 に答える
2

それが役立つかどうかはわかりませんが、たとえば次のように、他の何かを sqlcmd にパイプすることを試みることができます。

echo. | sqlcmd -?
于 2008-12-04T22:14:58.140 に答える