كيف يمكنني إطعام الإدخال القياسي لملف دفعي عندما شوط التطبيق من الأوحال دفعة مع ستدين؟

StackOverflow https://stackoverflow.com/questions/342130

  •  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 -?
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top