2013-07-11 13 views
5

この質問はここで回答していますが、私の具体例ではうまくいかないようです。私が初めて簡単なバッチファイルを書いている、と私はそれを実行するコマンドは次のとおりです。バッチファイルを強制的にプロンプ​​トに応答する

net time \\compname /set 

これは通常、yesまたはnoの確認のためのプロンプトが表示されます。私は、バッチファイルのためにこれを避けたかったし、追加することができますと言って人を見ました:

しかし
echo y | net time... 

、私はこのコマンドでそれを行うとき、私はそれが確認を求め、その後、すぐにこの次、それはラインを持って見ることができます「有効な回答はなかった」と述べた。

私はそれを修正することができないか、この場合にはエコーyがパイプされているこの面白いレスポンスを与える理由を知らない旗があるかどうか誰にも知っていますか?

答えて

8

ネットタイムコマンドは、「はい/」(文書化されていない)パラメータをサポートしていますので、この場合の答えは非常に簡単です:

net time \\compname /set /yes 
+0

素晴らしい作品です、ありがとうございます。 – Colin

+2

これはすべてのネットワーク共有から切断する場合にも有効です - 'net use */DELETE/yes' –

+0

これはサービス' net stop /yes'を停止する場合にも有効です –

0

この動作が確認されました。 NETが実行されているときに入力ストリームがクリアされているのだろうかと思います。私はそれを実行し、すぐにいくつかの文字を入力すると、最終的にプロンプ​​トを出した後に表示されますが、配管やファイルのリダイレクトは機能しません。インタラクティブであることが意図されているプログラムには、このイライラした特性があります。

コンピューターから時刻を取得し、パイプからデータを取り出せるdatetimeを使用して時刻を取得するこの回避策を試してください。

for /f "tokens=6-7" %a in ('net time \\compname') do (
    echo Setting system time to %a %b 
    echo %a | date > nul 
    echo %b | time > nul 
) 

そして、これは、バッチファイル内にある場合、すべてのこれらの変数のための余分な%を使用することを忘れないでください。スクリプト作成に手間をかけてくれたMicrosoftに感謝します。

+0

ああ、助けに感謝します。残念ながら、この回避策では秒/ msの精度が失われます。 – Colin

+0

これは酷いことです。私は仕事のためのより良いツールを探したり、バッチではなくNTPサービスを設定する必要があると思います。http://www.timetoolsglobal.com/2013/06/21/how-to-synchronize-microsoft-windows -to-a-ntp-server-1/ – paddy

関連する問題