バッチファイル/コマンドプロンプトで環境変数が設定されているかをチェックする方法




環境変数が設定されているかをチェックする方法
2パターンを紹介する。

IF文を使う

構文
IF DEFINED 変数 コマンド

DEFINED 条件は EXISTS と同様に動作しますが、環境変数名を受け取って、環境
変数が定義されている場合は真を返します。

環境変数が設定されてたら、コマンドを実行する

C:\>if DEFINED ENV echo OK

C:\>if DEFINED windir echo OK
OK


IF DEFINEDは、コマンド拡張機能に依存する。
デフォルト値では、コマンド拡張機能は有効だが
無効にすることもできる。
環境に依存しないでチェックするには以下のようにすればよい。



検索する方法

構文
set |findstr ^環境変数名= >nul 2>nul
if NOT {%ERRORLEVEL%} == {0} コマンド

環境変数が設定されてなかった、コマンドを実行する
「設定されていたら」の条件にしたい場合は、NOTを
削除すればいい。

C:\>set |findstr ^ENV= >nul 2>nul

C:\>if NOT {%ERRORLEVEL%} == {0} echo ENV not defined
ENV not defined

C:\>set |findstr ^windir= >nul 2>nul

C:\>if NOT {%ERRORLEVEL%} == {0} echo windir not defined

C:\>

Windowsのシャットダウンをキャンセルするちょっと工夫が必要な裏技

Mac OS Xのシャットダウンをキャンセルする超簡単な裏技 ライフハッカー[日本版]

Macをシャットダウンする時にいくつかアプリを立ち上げていると、前もってすべてのアプリを終了する必要があるので、シャットダウンまでは数秒かかります。もし、何かの手違いでシャットダウンボタンを押してしまった、もしくはシャットダウンの途中で気が変わった時は、なんでもいいのでDockのアイコンをクリックすれば、シャットダウンがキャンセルされます。

Macだと簡単なのね。
Windowsでもシャットダウンのキャンセルはできないこともない。

使用法: shutdown [-i | -l | -s | -r | -a] [-f] [-m \\コンピュータ名] [-t xx] [-c "コメント"] [-d up:xx:yy]

        引数なし                このメッセージを表示します (-? と同じです)
        -i                      GUI インターフェイスを表示します。このオプ
                                ションは最初に指定する必要があります
        -l                      ログオフ (-m オプションとは併用できません)
        -s                      コンピュータをシャットダウンします
        -r                      コンピュータをシャットダウンして再起動します
        -a            システム シャットダウンを中止します
        -m \\コンピュータ名     シャットダウン/再起動/中止するリモート コン
                                ピュータの名前です
        -t xx                   シャットダウンのタイムアウトを xx 秒に設定
                                します
        -c "コメント"           シャットダウンのコメントです (127 文字まで)
        -f                      実行中のアプリケーションを警告なしに閉じます
        -d [u][p]:xx:yy         シャットダウンの理由コードです
                                u = ユーザー コード
                                p = 計画されたシャットダウンのコード
                                xx = 重大な理由コード (255 以下の正の整数)
                                yy = 重大ではない理由コード (65535 以下の正の
                                整数)


shutdownコマンドの-aオプションでキャンセルできる。
ただし、スタートメニューの終了オプションから「終了」や「再起動」を選択した場合は
やめた方が無難。
どこでキャンセルされるか分からないので、キャンセル後になにも操作できない状態に
なってしまうことがあるからだ。


ではどうするか。

バッチの作成

終了用と再起動用のバッチを以下のように作る。

終了用のバッチ shutdownx.bat
@echo off
shutdown -s -f -t 20
echo キャンセルするにはEnterキーを押す
pause >nul 2>&1
shutdown -a
再起動用のバッチ reboot.bat
@echo off
shutdown -r -f -t 20
echo キャンセルするにはEnterキーを押す
pause >nul 2>&1
shutdown -a

使い方

1)実行すると、ダイアログが表示されてる。

2)ダイアログが表示されてる間に、コマンドプロンプトにEnterを押す。

(実際は、何のキーでもOKだ。間違ってCtrl+Cでバッチを終了してはいけない。)

3)pauseが解けて、「shutdown -a」が実行されてシャットダウンがキャンセルされる。



コマンドが苦手な人は、先程のバッチのショートカットを作る。
右クリックのプロパティを選択して、「ショートカット」タブの「アイコンの変更」で
好みのアイコンに変更する。

例えばこんなアイコンにする。

Button reboot icon

http://www.iconspedia.com/uploads/12791758851580213304.png


そして、デスクトップの片隅などに置いておけばいい。
よく使うアイコンと同じところに置いてしまうと間違って押してしまうので普段つかなわい側の
隅にでも置くのがいいのではなかろうか。
実行するとコマンドプロンプトが表示される。
キャンセルは上記に書いた方法と同じでEnterを押せばいい。
(こればかりはバッチを使ってるので仕方がない。)


追記
shutdown -a だけのバッチを作成しないのは、スタートメニューからの
キャンセルを抑止するため。
バッチからshutdown -sを実行した場合にだけ、キャンセルを実行させる
ようにしたいから。







気になるモノ




ムダを省いたシンプルなデザインで、読み終わった新聞や雑誌までインテリアのように見せてしまう、スタイリッシュなニューズラック

アンジェ(インテリア雑貨)

¥ 2,520(税込、送料別)

価格は記載時点のものです。購入前にご確認ください。



Windowsでコマンドラインによるスクリーンショットの撮り方

「url2bmp」は、指定した縦横のピクセルサイズでWebサイトのスクリーンショット
撮ることができるコマンド。
サイズの指定も可能。
定期的にWebサイトのスクリーンショットを残したい場合などにも使える



1.url2bmp]をインストールする

1)url2bmpからダウンロード
2)解凍
3)インストール(PATHが設定されてる場所にコピーする)

2.スクーンショットを撮る

コマンドオプション
  • url url to convert to
  • file output file
  • format accept "png", "bmp", "jpeg" and "tiff"
  • wx virtual screen width
  • wy virtual screen height
  • bx bitmap width
  • by bitmpat height
  • wait, number of second to wait before bitmap generation
  • maximize start in maximized mode
  • notinteractive run and exit when done
  • removesb remove right scroll bar

例として、xeferでのTwitterの活動状況のスクリーンショットを撮る。

C:\usr\bin\url2bmp.exe -url http://www.xefer.com/twitter/orange_clover -file xefer.png -format PNG -wx 1280 -wy 960 -bx 1280 -by 960 -wait 60 -removesb -notinteractive 

3.実行


本来は、このようなGUIのソフトだ。
「-notinteractive 」を付けることでGOボタンをクリックすることなく
タスクバーに最小化された状態で、スクリーンショットを撮ることができる。


4.結果




実際に、orangecloverさんのプロフィールでこのスクリーンショットを使ってる。







気になモノ




EVOLGの手袋は、特殊繊維にアクリルやウールを混ぜ込むことで手袋を付けたままiPhoneiPodなど多くの携帯端末に採用されている静電気容量式タッチパネルの操作を可能にしました。多彩なカラーとデザイン性を持ち合わせた全く新しい手袋です。

雑貨 HIGHTIDE DAILY DEPOT

¥ 3,780(税込、送料別



また『ドライバは \Device\Harddisk0\D でコントローラ エラーを検出しました。』のエラーが出てた。


自分自身の体調も悪いが、PCの調子もよくない。 (/_<。)

現象

イベントログに以下のエラーメッセージが出る

イベントの種類:	エラー
イベント ソース:	Disk
イベント カテゴリ:	なし
イベント ID:	11
説明:
ドライバは \Device\Harddisk0\D でコントローラ エラーを検出しました。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
データ:
0000: 03 00 68 00 01 00 b6 00   ..h...¶.
0008: 00 00 00 00 0b 00 04 c0   .......〓
0010: 01 01 00 00 00 00 00 00   ........
0018: 00 00 00 00 00 00 00 00   ........
0020: 00 ae ee c0 00 00 00 00   .〓〓〓....
0028: 1a ee 20 00 00 00 00 00   .〓 .....
0030: ff ff ff ff 03 00 00 00   〓〓〓〓....
0038: 40 00 00 8f 02 00 01 00   @..&#143;....
0040: 00 20 0a 12 40 03 20 40   . ..@. @
0048: 00 00 00 00 0a 00 00 00   ........
0050: 00 00 00 00 b8 95 2f 89   ....〓&#149;/&#137;
0058: 00 00 00 00 58 f8 2a 89   ....X〓*&#137;
0060: 02 00 00 00 57 77 60 00   ....Ww`.
0068: 28 00 00 60 77 57 00 00   (..`wW..
0070: 08 00 00 00 00 00 00 00   ........
0078: f0 00 04 00 00 00 00 0b   〓.......
0080: 00 00 00 00 08 03 00 00   ........
0088: 00 00 00 00 00 00 00 00   ........
イベントの種類:	エラー
イベント ソース:	atapi
イベント ID:	5
説明:
\Device\Ide\IdePort0 でパリティ エラーが検出されました。
詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
データ:
0000: 0f 00 50 00 01 00 a4 00   ..P...〓.
0008: 00 00 00 00 05 00 04 c0   .......〓
0010: 03 00 00 80 00 00 00 00   ...&#128;....
0018: 00 00 00 00 00 00 00 00   ........
0020: 00 00 00 00 00 00 00 00   ........
0028: 06 00 00 00 00 00 00 00   ........
0030: 00 00 00 00 07 00 00 00   ........
0038: 40 00 00 8f 02 00 01 00   @..&#143;....
0040: 00 20 0a 12 40 03 20 40   . ..@. @
0048: 00 00 00 00 0a 00 00 00   ........
0050: 00 00 00 00 b8 95 2f 89   ....〓&#149;/&#137;
0058: 00 00 00 00 58 f8 2a 89   ....X〓*&#137;
0060: 02 00 00 00 87 77 60 00   ....&#135;w`.
0068: 28 00 00 60 77 87 00 00   (..`w&#135;..
0070: 08 00 00 00 00 00 00 00   ........


DドライブのHDDとケーブルは新品に交換したんだけどな。
マザーボード? メモリ?
ウイルス??
困った。






ん? Harddisk0?
このPCって、ATAPIとSATAのHDDが付けてたっけ。
コンピュータの管理 > ディスクの管理で確認するとディスク0ってATAPIのバック用のドライブだな。
Dドライブじゃないかったのか・・・
こいつの意味は、プライマリーのスレーブって意味なのか!?


ATAPIに付いているバック用のIドライブを外して、壊れてなかったSATAのHDDをバックアップ用の
Iドライブに割り当てた。




これでエラーがなくなればOK。しばらく様子見。




バックアップ用のドライブのために、PC本体が不調になってたら本末転倒 ( ̄▽ ̄;)


関連あるかもしれない記事




Windowsでまたアプリが落ちてるので、デスクトップヒープを増やしてみた。

また、Googleガジェット、ThunderbirdVMwareなどなどもろもろのアプリが落ちてる。。。

イベント ソース:	vmauthd
説明:
イベント ID (100) (ソース vmauthd 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です: Request by process 4080 to open '\\.\vmx86': unrecognized pid
.


時間帯からすると、どうやら、バックアップ処理の後のようだ。
メモリ不足が発生してるのか?
仮想メモリも増やしたんだけどな。
ウーン( ̄~ ̄;)


もしかして、デスクトップヒープ不足??
一応増やしてみるか。

多数のプログラムを実行すると、"メモリ不足です" エラー メッセージが表示される

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems
  └Windows
変更前
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,<span style="font-weight:bold;color:#FF0000;">3072,512</span> Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

10年間知らなかった、ホイールマウスのホイールでのクリック


PCを使い始めて14年ぐらいか。
ホイールマウスが世の中に出てからどのくらいが経つだろうか?
10年ぐらいは経っているだろうか。


Firefoxでリンクをホイールでクリックすると
「右クリック」 > 「リンクを新しいタブで開く」と同じ動作する。


ホイールマウスのホイールでのクリックを知らなかった!!


後輩に教えてもらった。
あまりにも基本的な機能を知らなかったことに自分自身が驚いた。
言い訳する必要は全くないのに、しどろもどろなことを・・・


世の中にはマルチタッチ対応マウスなんてのもあるのに、
ホイールマウスの基本的なことすら知らなかったよ。


Ctrl+クリックでその動作になるのは知ってたけど・・・
それさえ、おじさんってことだよな。。。


基本的な操作であればあるほど、最初に覚えた仕草が身についてしまっている。
日本語⇔英語の切り替えを 「Alt + 半角/全角」 でやってしまう。
半角/全角でできるのにね。


たまには他人の操作を眺めてみるというのもいいかも知れない。










基本的機能すら使いこなせてないからん、こんなにボタンがあると・・・


マルチタッチマウス? 慣れれば便利そうだ。Windowsで使えればだけど。


トラックボールも一回試してみたい。

「サービス」を起動するバッチファイル


Windowsでサービス状態一覧を表示するコマンドがないのはなぜだろうか?
Windowsでサービス状態一覧を表示するコマンドがないのはなぜだろうか?(VBScript編)
コマンドプロンプトで、サービスの一覧を表示、確認する方法を書いたが、
「サービス」の画面を開いて操作した方が早い場合もある。
VMWare XXXのように連続してるサービスを起動とか、■▶ ボタンでの再起動など。


基本的にコントロールパネル > 管理ツール > サービス にあるのだが、
Windows 7は、コントロールパネルの表示がアイコン表示になっていればいいが
「カテゴリ」になっていたりして、どこに管理ツールがあるのか戸惑うことがある。
テストマシンとかは、表示方法がマチマチだから。



そのため、バッチファイル化しておけば、どのWindowsでもサクっと起動させることができる。

@echo off
start %SystemRoot%\system32\services.msc /s