كيف يمكنني إطعام الإدخال القياسي لملف دفعي عندما شوط التطبيق من الأوحال دفعة مع ستدين؟
-
19-08-2019 - |
سؤال
وهنا ملف دفعي الحد الأدنى، 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
. الإخراج:
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
لا تلعب لطيفة إلى حد ما مع اللغة الفصحى التي لم يكن من المفترض لذلك. أي شخص لديه
أي الأفكار النيرة حول كيف يمكن أن تعمل من حوله؟ في عالم مثالي، فإن الحل لا تنطوي على تغيير الأصلي
ملف دفعي، أو تنطوي على تركيب حزم طرف ثالث لدفع التفاعل (مثل نتوقع).
المحلول
ويمكنك أيضا إعادة توجيه NUL إلى SQLCMD:
sqlcmd -? < NUL
ولكن هذا يتطلب تغيير السيناريو دفعة كذلك.
نصائح أخرى
وأنا لا أعرف إذا كان ذلك يساعد، ولكن يمكنك محاولة الأنابيب شيء آخر لSQLCMD، على سبيل المثال:
echo. | sqlcmd -?
لا تنتمي إلى StackOverflow