2011年2月アーカイブ

2011年2月25日

コマンドプロンプトでコマンドが実行できない

JavaやMySQLをインストールする場合、環境変数の「Path」を書き換えることになるのですが、その際に既に設定してあるものを削除してしまうとトラブルの原因となります。

よくあるのがコマンドプロンプトでコマンドを実行できなくなるトラブルです。

環境変数の登録方法

  • 「コントロール パネル>システム」
  • 「マイコンピュータを右クリック>プロパティ」
  • 「Winキー+Pause/Break」

上記の方法で表示した「システムのプロパティ」内の「詳細設定」タブにある「環境変数」ボタンで環境変数の登録を行えます。

基本的なコマンドの実行方法

自分のいるディレクトリ>実行ファイル名

トラブル例

Javaをインストールした際、既存の環境変数を下記のように上書きしてしまった場合

.;C:\Program Files\Java\jdk1.6.0_05\bin;

IPアドレスを確認しようとコマンドプロンプト上で「ipconfig」コマンドを実行するとエラーがでます。

C:\>ipconfig
「C:\(Cドライブ)」直下、もしくは環境変数に登録されたディレクトリ内にある「ipconfig.exe」を実行しにいく
環境変数に「C:\WINDOWS\system32」がないので実行できずにエラーになる

'ipconfig' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

「ipconfig」コマンドは環境変数に登録されている「C:\WINDOWS\system32」内で実行されるのに、その環境変数を削除してしまったことで起きたエラーです。
なので、環境変数にコマンド実行ファイルが置かれたディレクトリのパスを追加しましょう。

C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS\System32\Wbem;

※「ipconfig」コマンドの実行であれば「C:\WINDOWS\system32;」のみを環境変数に登録すれば対応できますが、上記には登録しておいたほうがよい主要パスが含まれています。
※「ipconfig」コマンドは「C:\WINDOWS\system32\ipconfig.exe」を実行しています。なので、環境変数に「C:\WINDOWS\System32;」が登録されていなくても、下記のようにディレクトリを「C:\WINDOWS\System32」に移動すれば「ipconfig」を実行できます。

C:\>cd C:\WINDOWS\system32
cd(チェンジディレクトリ)で、自分のいるフォルダを「C:\WINDOWS\system32」へ移動

C:\WINDOWS\system32>ipconfig
「C:\WINDOWS\system32」内の「ipconfig.exe」を実行

Windows IP Configuration


Ethernet adapter ローカル エリア接続:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 172.19.10.5
        Subnet Mask . . . . . . . . . . . : 255.255.0.0
        Default Gateway . . . . . . . . . : 172.19.0.1

ですが、この方法だと「ipconfig」を実行するたびにディレクトリを「C:\WINDOWS\System32」に移動しなければいけません。それは面倒なので、環境変数にパスを登録しディレクトリ移動させなくても環境変数に登録されているパス直下のファイルはファイル名のみで実行できるようにしているのが環境変数の役目です。

もちろんJavaのパスも残しておくので、最終的に以下のパスが登録されていることになります。

.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.6.0_05\bin;

これでどのディレクトリからでも「C:\WINDOWS\system32」直下のコマンドを実行できるようになります。
下記のように現在のディレクトリがCドライブでも「ipconfig」を実行できるようになりました。

C:\>ipconfig
「C:\(Cドライブ)」直下、もしくは環境変数に登録されたディレクトリ内にある「ipconfig.exe」を実行しにいく
環境変数に「C:\WINDOWS\system32」が登録されているので実行できる

Windows IP Configuration


Ethernet adapter ローカル エリア接続:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 172.19.10.5
        Subnet Mask . . . . . . . . . . . : 255.255.0.0
        Default Gateway . . . . . . . . . : 172.19.0.1

尚、現在環境変数に登録されているパスを調べるには「path」コマンドを使用しましょう。

C:\>path
PATH=.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.6.0_05\bin;

2011年2月20日

MySQLの再起動をbatファイルで行う

サービスの再起動を「コントロールパネル>管理ツール>サービス」から行うのは面倒なので、batファイルから再起動させてみる。

  1. 基本ファイル
  2. MySQL再起動用

基本ファイル

下記ファイルの9行目に再起動の対象サービス名、12行目にログの出力場所を記述し「任意の名前.bat」として保存します。(windowsで実行させるので作成ファイルの文字コードはShift-JISにします)

あとは再起動を行いたい時に作成したbatファイルをダブルクリックすれば処理が実行されます。

ちなみに今回はサービスが開始していない時も、再起動できるようにエラー時に処理を中止していません。処理を中止させたい時は、エラーログ出力後に「exit」してください。

@echo off

rem -------------------------------------------------
rem サービスの再起動用batファイル
rem -------------------------------------------------


rem # 再起動サービス名
set SERVICE="サービス名を記述"

rem # ログ出力パス
set LOG=出力パスを記述
rem # 実行日時出力
echo ---------- >> %LOG%
date /t >> %LOG%
time /t >> %LOG%

rem # 対象サービス停止コマンド実施
net stop %SERVICE% >> %LOG%


rem # 対象サービス停止エラー判定
if %errorlevel%==0 goto STOP_OK
rem # エラー時
  echo サービス終了時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:STOP_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

rem # 対象サービス開始コマンド実施
net start %SERVICE% >> %LOG%

if %errorlevel%==0 goto START_OK
rem # エラー時
  echo サービス開始時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:START_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

MySQL再起動用

もう一例「MySQL」を再起動させ、ログファイルを「C:\restart_service.log」に出力するbatファイルは以下のような記述になります。設定ファイルを変更した時などに便利です。

@echo off

rem -------------------------------------------------
rem サービスの再起動用batファイル
rem -------------------------------------------------


rem # 再起動サービス名
set SERVICE="MySQL"

rem # ログ出力パス
set LOG=C:\restart_service.log

rem # 実行日時出力
echo ---------- >> %LOG%
date /t >> %LOG%
time /t >> %LOG%

rem # 対象サービス停止コマンド実施
net stop %SERVICE% >> %LOG%


rem # 対象サービス停止エラー判定
if %errorlevel%==0 goto STOP_OK
rem # エラー時
  echo サービス終了時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:STOP_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

rem # 対象サービス開始コマンド実施
net start %SERVICE% >> %LOG%

if %errorlevel%==0 goto START_OK
rem # エラー時
  echo サービス開始時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:START_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

2011年2月19日

TOMCATの再起動をbatファイルで行う

サービスの再起動を「コントロールパネル>管理ツール>サービス」から行うのは面倒なので、batファイルから再起動させてみる。

  1. 基本ファイル
  2. TOMCAT再起動用

基本ファイル

下記ファイルの9行目に再起動の対象サービス名、12行目にログの出力場所を記述し「任意の名前.bat」として保存します。(windowsで実行させるので作成ファイルの文字コードはShift-JISにします)

あとは再起動を行いたい時に作成したbatファイルをダブルクリックすれば処理が実行されます。

ちなみに今回はサービスが開始していない時も、再起動できるようにエラー時に処理を中止していません。処理を中止させたい時は、エラーログ出力後に「exit」してください。

@echo off

rem -------------------------------------------------
rem サービスの再起動用batファイル
rem -------------------------------------------------


rem # 再起動サービス名
set SERVICE="サービス名を記述"

rem # ログ出力パス
set LOG=出力パスを記述
rem # 実行日時出力
echo ---------- >> %LOG%
date /t >> %LOG%
time /t >> %LOG%

rem # 対象サービス停止コマンド実施
net stop %SERVICE% >> %LOG%


rem # 対象サービス停止エラー判定
if %errorlevel%==0 goto STOP_OK
rem # エラー時
  echo サービス終了時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:STOP_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

rem # 対象サービス開始コマンド実施
net start %SERVICE% >> %LOG%

if %errorlevel%==0 goto START_OK
rem # エラー時
  echo サービス開始時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:START_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

TOMCAT再起動用

例えば「Apache Tomcat」を再起動させ、ログファイルを「C:\restart_service.log」に出力するbatファイルは以下のような記述になります。

@echo off

rem -------------------------------------------------
rem サービスの再起動用batファイル
rem -------------------------------------------------


rem # 再起動サービス名
set SERVICE="Apache Tomcat"

rem # ログ出力パス
set LOG=C:\restart_service.log

rem # 実行日時出力
echo ---------- >> %LOG%
date /t >> %LOG%
time /t >> %LOG%

rem # 対象サービス停止コマンド実施
net stop %SERVICE% >> %LOG%


rem # 対象サービス停止エラー判定
if %errorlevel%==0 goto STOP_OK
rem # エラー時
  echo サービス終了時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:STOP_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%

rem # 対象サービス開始コマンド実施
net start %SERVICE% >> %LOG%

if %errorlevel%==0 goto START_OK
rem # エラー時
  echo サービス開始時にエラーが発生しました。 >> %LOG%
  echo エラー番号:%errorlevel% >> %LOG%
  net helpmsg %errorlevel% >> %LOG%

rem # 正常時
:START_OK
echo 処理終了時刻 >> %LOG%
time /t >> %LOG%
echo. >> %LOG%