Here's a minimal batch file, demo.bat
, to illustrate my problem:
@ECHO off
set /p foo=Enter foo:
echo.
echo you typed "%foo%"
sqlcmd -?
set /p bar=Enter bar:
echo.
echo you typed "%bar%"
I have an input file foo.txt
that looks like so:
foo_value bar_value
I run my batch file as demo.bat < foo.txt
. The output is:
Enter foo: you typed "foo_value" Microsoft (R) SQL Server Command Line Tool Version 9.00.3042.00 NT INTEL X86 Copyright (c) Microsoft Corporation. All rights reserved. usage: Sqlcmd [-U login id] [-P password] (...etc...) Enter bar: you typed "foo_value"
If I remove the sqlcmd -?
, then bar is "typed" as bar_value
, which is what I originally expected.
So, it looks to me like sqlcmd
is not playing nice somehow with the standard input that wasn't meant for it. Anyone have
any bright ideas on how I can work around it? In a perfect world, the solution would not involve changing the original
batch file, or involve installing third-party packages to drive the interaction (e.g. Expect).