- ベストアンサー
バッチファイルのDOS窓を閉じる方法
- Windows7Ulti32ビットを使用しています。ガジェットの表示がされない場合があり、バッチファイルを作成してkillして再起動する方法を試しています。しかし、バッチファイルのDOS窓が閉じずに残ってしまいます。バッチファイルを作成して、DOS窓を閉じる方法を教えてください。
- バッチファイルを作成してガジェットの表示をリフレッシュする方法を試していますが、バッチファイルのDOS窓が閉じずに残ってしまいます。どのようにすればDOS窓を閉じることができるのでしょうか?
- Windows7Ulti32ビットを使用しています。ガジェットの表示がされない場合があり、バッチファイルを作成してkillして再起動する方法を試しています。しかし、バッチファイルのDOS窓が閉じないため困っています。DOS窓を閉じる方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私も確認しながらなので度々となり済みません。 Windows7起動時にガジェットが表示されないことがある問題の件、Windows8関連で裏付け?となりそうな情報を見つけましたので評価しました。 ■Sidebar.exeの起動のタイミング 以下のレジストリキーに記述されていることから、Windowsへのログオン時に起動されることになります。これは既に確認済みでした。 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run Windowsへのログオン時には様々なサービスやプログラムの実行が開始されますから、H/W環境やS/Wの設定・環境によっては非常に処理が混み合った状態になります。このためサービスについては負荷分散のために「遅延起動」という設定が以前からできるようになっています。ところが、上記レジストリキーへの登録など(スタートアップへのショートカットを含む)、サービス以外のものについては起動のタイミングを「個別にずらす」ことはできないようです。 ■評価結果 個別ではなく、Runに記述されているプログラムの起動タイミングを全部まとめて変更することはできました。ただ、実際に表示されなかったガジェットが、この方法で表示されるタイミングに変わるかどうかはそのPCの環境次第になるものと思われます。また、ログオン時に起動されるプログラムの数が多い場合には、変更できる現実的な時間はあまり長くできないと思います。「Vistaのように60秒後に起動される」では使いものにならないないでしょうからね。 ■方法と注意事項 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \Explorer\Advanced\DelayedAppsキーの、DelayedAppsキーの値を「適切な値」に変更します。「適切な値」はその環境によって異なるものと思います。(せいぜい数秒以内でないと駄目でしょう) 手順は参照サイトに書かれている通りですが、Windows8とは画面が異なるため読み替えながら実行します。 また、そのままでは変更できないレジストリキーなのでキーの所有者を変更しますが、設定を変更・効果を確認した後は、元の所有者に戻さなければなりません。そうしないと、将来このレジストリキーをWindows Updateが変更しようとしたときに、エラーになってしまうものと思われます。なお、DelayedAppsキーをエクスポートしただけではレジストリの所有者情報は含まれていませんから、事前にバックアップを取っていたとしても意味はありません。自分の操作か復元ポイントで戻さねばなりません。 ■DelayedAppsキー ・設定変更前の状態 所有者:TrustedInstaller-権限:フルコントロール 所有者:Administrator-権限:値の照会・サブキーの列挙/作成・読み取り制御 ・設定変更後の状態 所有者:Administrator-権限:フルコントロール → この状態で設定値を変更し、設定値確定後に変更前の状態に戻す。 参照サイト) Windowsスマートチューニング Win 8編: OSの応答性を優先し、デスクトップアプリの自動起動を遅らせる http://news.mynavi.jp/column/windows/250/ アクセス権をTrustedInstallerに戻すには http://nonsubject.arinco.org/2010/10/trustedinstaller.html お陰様でこれらのサイトからの情報で今までの疑問の1つが晴れました。また、今までの経験上で想定していたことも概ね間違いではなさそうで、私はとりあえずは満足しました。私の現在の環境では普通にガジェットが表示されますので効果の確認はできませんが、何かしらの変化はあるのではないかと考えています。 あとは実際に効果があることを期待しております。
その他の回答 (3)
- USS-Enterprise
- ベストアンサー率46% (272/580)
ANo.2です。 >dos窓は消えたように見えて、最小化してこっそりいました・・ 12/10のWindows Update適用前には、私の環境ではDOS窓は確実に閉じていました。何度も確認していましたのでこれは間違いありません。が、Windows Updateを適用後、仰るようにDOS窓が最小化の状態になってしまいました。今回の更新で何か関係あるのでしょうか? DOS窓のCloseは以下の設定で可能になりました。最終行の追加です。スマートな方法だとは思いませんが、自分のイメージ名を指定してkillするものです。 ---------------------------------- @echo on taskkill /im sidebar.exe /f > nul pause start /min cmd /c, "C:\Program Files\\Windows Sidebar\\sidebar.exe" taskkill /im cmd.exe /f > nul ---------------------------------- pauseを入れたものをご紹介したのは「killしたsidebarが正常に終了する前に新たにsidebarを起動してしまうという”同期が取れていなかったこと”を確認するため」であり、当初から恒久的な対処方法のつもりではありません。このような現象は、マルチプロセス/マルチタスクOS下で動かす際の重要な注意点(同期/排他)の1つなのです。プロセス(それを動かしていたOS側のバックグラウンドを含めて)が完全に終了したタイミングが判断できれば良いのですが、それをWindowsに望むべくもありません。 本題のガジェットが表示されない件ですが、たぶんWindows起動時(ログオン時)の、Sidebar.exeの起動タイミングが適切でない事があるのでしょう。PCによって起動されるサービスやプログラム・設定等が異なりますから、タイミングはそれぞれ異なります。「まだOS側のバックグラウンドの準備が整っていないタイミングでSidebar.exeが起動される為に表示されない」という不具合なのだと推測しています。 私も気になりますので、引き続き調べてみたいと思います。 HOTFIXについては残念でした。余計なお手間をおかけしてすみません。
- USS-Enterprise
- ベストアンサー率46% (272/580)
あなたのやりたいことは理解できます。頻度はごく少ないですが、私もガジェットが表示されなかったことがありますから。 DOS窓が閉じない原因は、 start "" timeout 2 > nul の1行で start /min cmd /c,"C:\Windows\winsxs… が停止しないためだと思います。(SideBarCtrl.bat が2秒間停止する訳ではない) ここでstartされた別のcmd.exeが2秒間単独でディレイとなるだけで、呼び出し元のSideBarCtrl.bat が停止するのではありません。 呼び出し元のSideBarCtrl.bat が、プロセス間の同期を取らずに一気に最後のコマンドラインまで実行してしまうため、このような現象になってしまうのだと思います。 試しに @echo on taskkill /im sidebar.exe /f > nul pause rem start "" timeout 2 > nul start /min cmd /c, "C:\Program Files\\Windows Sidebar\\sidebar.exe" を実行してみて下さい。(任意のタイミングでキーを入力する) ※私はWin7 Pro 64bitなので、sidebar.exeのフォルダ位置を変えてあります。 何の問題もなくDOS窓が閉じるようになると思います。pauseによって、表面的には同期が取れた(ようなタイミングになった)からです。 ご質問はDOS窓が閉じない件ですが、本来は「sidebar.exeが起動されているにも関わらず、ガジェットが表示されないことの解決策」だと思います。 これなど参考にならないでしょうか?(機械翻訳なので日本語は意味不明ですが…) http://support.microsoft.com/kb/979164/ja
補足
おっしゃるとおりです。DOS窓を閉じたいわけではなく、sidebarを表示するのが目的です。 ご提案いただいた「PAUSE」作戦ですが、つつがなくsidebarは表示されますが、dos窓は消えたように見えて、最小化してこっそりいました・・ 教えていただいたHOTFIXを見に行き、ダウンロードして「Windows6.1-KB979164-x86.msu」を実行したところ、「この更新プログラムはお使いのコンピューターには適用できません」メッセージでインストールにいたらず・・・ どうすればいいのでしょうかね・・・
- nabe3desu
- ベストアンサー率46% (253/550)
sidebar.exeをキックしている行の”cmd /c,"を取ったら、終了後DOS窓も消えましたよ。
お礼
おおおおお、ありがとうございます! 長年の悩みが消えました デトックス気分です
お礼
回答ありがとうございます。ご提案の方法については、帰宅後確認してみようと思います
補足
回答ありがとうございます。 教えていただいたステートメントにより (1)ガジェットが消えているときに再表示 (2)ガジェットが表示されているときに消して再表示 の2パターンの動作が確認できました @echo off taskkill /im sidebar.exe /f > nul timeout /T 2 > nul start /min cmd /c,"C:\Program Files\Windows Sidebar\sidebar.exe" taskkill /im cmd.exe /f > nul exit 引き続き調べていただけるとのこと、BAにしてしまうと トピックがクローズしてしまいますので、期限がくるまでは 質問をたてたままにしておきます どうもありがとうございます