Come posso alimentare l'input standard in un file batch quando un'app viene eseguita dai muck batch con stdin?

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

  •  19-08-2019
  •  | 
  •  

Domanda

Ecco un file batch minimo, demo.bat, per illustrare il mio problema:

@ECHO off

set /p foo=Enter foo:
echo.
echo you typed "%foo%"

sqlcmd -?

set /p bar=Enter bar:
echo.
echo you typed "%bar%"

Ho un file di input foo.txt che assomiglia a questo:

foo_value
bar_value

Eseguo il mio file batch come demo.bat < foo.txt. L'output è:

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"

Se rimuovo sqlcmd -?, la barra è " digitata " come bar_value, che è quello che mi aspettavo inizialmente.

Quindi, mi sembra che sqlcmd non stia giocando bene con l'input standard che non era pensato per questo. Qualcuno l'ha fatto qualche idea brillante su come posso aggirarlo? In un mondo perfetto, la soluzione non implicherebbe la modifica dell'originale file batch o implica l'installazione di pacchetti di terze parti per favorire l'interazione (ad esempio Expect).

È stato utile?

Soluzione

Puoi anche reindirizzare NUL a sqlcmd:

sqlcmd -? < NUL

ma ciò richiederebbe anche la modifica dello script batch.

Altri suggerimenti

Non so se sia d'aiuto, ma puoi provare a convogliare qualcos'altro su sqlcmd, ad esempio:

echo. | sqlcmd -?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top