わすれなぐさ

自称情報ブログ・備忘録

タグ:バッチファイル

バッチファイルやコマンドプロンプトからMicrosoft Storeを起動する方法です。

方法

次のコマンドを実行します。
start ms-windows-store:

※最後のコロンを忘れないように。

説明

Windows 10のURIというのを使っています。

「Win」+「R」を押すと出てくる「ファイル名を指定して実行」に「ms-windows-store:」と入力することでも同じ結果を得られます。

他に、「ms-windows-store://search/?query=OneNote」と入力して検索結果を表示したり、「ms-windows-store://settings」で設定ページを開いたりできます。詳細は次のページなどを参考にしてください。

コマンドプロンプトやバッチファイルから、Windows Updateの「更新プログラムのチェック」を実行する方法です。Windows 10 バージョン 1903でも実行可能です

方法

以下のコマンドを実行してください。
start ms-settings:windowsupdate-action

説明

Windows 10のURIというのを使っています。

「Win」+「R」を押すと出てくる「ファイル名を指定して実行」に「ms-settings:windowsupdate-action」と入力することでも同じ結果を得られます。

コマンドプロンプトまたはバッチファイルでWi-Fi(無線LAN)に接続する方法です。新しいPCにWi-Fi設定を展開するときなどに使えます。

1. Wi-Fiプロファイルをエクスポートする

まずは、Wi-Fiに接続済みのPCを使って、Wi-Fiプロファイルをエクスポートする必要があります。

① コマンドプロンプトを管理者として実行します。

② 次のコマンドを実行します。key=clear を指定することで、セキュリティキーも含めてエクスポートできます。
netsh wlan export profile name=<プロファイル名> folder=<保存先フォルダ> key=clear

なお、プロファイル名は次のコマンドで確認できます。基本的に、プロファイル名はSSIDと同じだと思います。
netsh wlan show profile

2. Wi-Fiプロファイルをインポートする

続いて、先程エクスポートしたファイルを、これからWi-Fiに接続したいPCにインポートします。

① コマンドプロンプトを実行します。管理者権限は不要です。

② 次のコマンドを実行します。
netsh wlan add profile filename=<ファイル名.xml>

これでWi-Fiに接続できたはずです。

補足

Wi-FiプロファイルはXMLファイルなので、テキストエディタで編集することができます。例えば <connectionmode> を auto にすると自動接続、manual にすると手動接続になります。

また、Wi-Fiプロファイルをインポートした後で、コマンドからプロファイルのパラメータを書き換えることもできます。例えば、次のコマンドを実行すると、自動的に接続する・しないを変更できます。
netsh wlan set profileparameter name=<プロファイル名> connectionmode=auto または manual

バッチファイルのif文の中で変数をsetし、同じif文の中でその変数を使うと期待通り動きません。

原因

if文が実行された時点で、if文の中身がすべて読み込まれるためです。

実例

次のようなバッチファイルを作成します。
if 1 == 1 (
    set a="foo"
    echo %a%
    pause
)
echo %a%
pause
これを実行すると、次のように画面に表示されます。
C:\>if 1 == 1 (
set a="foo"
 echo
 pause
)
ECHO は <ON> です。
続行するには何かキーを押してください . . .

C:\>echo "foo"
"foo"

C:\>pause
続行するには何かキーを押してください . . .
これを見ると、if文がまとめて読み込まれており、同じif文内のechoは%a%に何も入っていない状態で実行されていることがわかります。

ただし、次のecho %a%が期待通り実行されていることから、if文を抜けた後は変数に値が入るようです。

補足

for文内や、set /a、set /pでも同様の問題が起こります。

対策

gotoをうまく使うなどの工夫をするか、遅延環境変数に置き換えてみましょう。

CMD.EXEの遅延環境変数の展開 - ふなWiki

バッチファイル(.bat)を使ってWindows 7をスリープモードに移行させる方法です。

バッチファイルの内容

以下のように記述します。
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
このバッチファイルは管理者権限で実行すると「スリープ」、管理者権限なしで実行すると「休止状態」になります。

参考
Windows7でスリープモード(S3)に移行するバッチファイル - とろテク
バッチファイルで,Windowsの電源をスリープ(スタンバイ)に切り替え - プログラミングとIT技術をコツコツ勉強するブログ

「スリープ」と「休止状態」の違い

「スリープ」は、作業内容をメモリに保存してPCを停止します。「休止状態」は、作業内容をハードディスク(HDD)に移してからPCを停止します。

「スリープ」はメモリの保持に電力を使うので「休止状態」よりも電気代がかかりますが、その代わりに素早く終了、起動できます。「休止状態」はその逆です。ただし終了と起動には大きな電力を使うので、電気代的には停止時間が90分以内なら「スリープ」の方が有効なようです。また、「スリープ」の場合は作業内容がメモリに保存されるので、突然電源が落ちたときデータを失う可能性が高いです。

ちなみに、Windows 7の通常のスリープは「ハイブリッドスリープ」といって、上記の「スリープ」や「休止状態」とは違い、作業内容をメモリとハードディスクの両方に保存してPCを停止するようです。

参考
Windowsの「スタンバイ(スリープ)」と「休止状態」の違いとは?|エンジョイ!マガジン
スリープと休止状態: よく寄せられる質問
シャットダウン vs. スリープ | Windows PC 消費電力検証結果レポート

ファイルを常に管理者権限で実行する方法

①ファイルへのショートカットを作成します。
②ショートカットのプロパティを開きます。
③右下の「詳細設定」をクリックし、詳細プロパティの「管理者として実行」にチェックします。

参考
バッチファイルを常に管理者として実行する方法 - 気になったこと日記

バッチファイルを実行して暫く待ってからスリープする方法

timeoutコマンドを使います。
timeout 60
このように記述すると60秒待たせることができます。待っている間何かキーが押されると、残り時間を無視して次のコマンドに移ります。

参考
Windowsのtimeout/sleepコマンドで実行を一時停止する - @IT
 

このページのトップヘ