Вот минимальный пакетный файл, demo.bat
, чтобы проиллюстрировать мою проблему:Как я могу подавать стандартный ввод в пакетный файл, когда приложение запускается из пакетных mucks с помощью stdin?
@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
. Выход:
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"
Если удалить sqlcmd -?
, то бар «набирается», как bar_value
, что то, что я первоначально ожидалось.
Итак, мне кажется, что sqlcmd
не играет хорошо как-то со стандартным входом, который не был предназначен для этого. У кого есть любые яркие идеи о том, как я могу обойти это? В идеальном мире решение не будет связано с изменением исходного командного файла или связано с установкой сторонних пакетов для управления взаимодействием (например, Expect).
Есть ли другие команды или программы, демонстрирующие это поведение? У меня нет sqlcmd, и я не могу найти другую программу, которая воспроизводит эту проблему ... – 2008-12-05 01:02:23