バッチファイルの概要

バッチファイルは、簡単にルーチン作業、繰り返し作業を行うためのファイル、仕組みです。バッチファイルは 拡張子「.bat」または「.cmd」のテキストファイルで、メモ帳などのテキストエディタで作成できます。コマンドプロンプトで バッチファイルのファイル名を入力して Enterキーを押すとバッチファイルが実行できます。実際は コマンドプロンプト(Cmd.exe)が ファイルの中身を順番に実行してくれるという仕組みです。

バッチファイルには、コマンドプロンプトで実行できるコマンド(Copy、Del、NETとか)、アプリケーション(*.exe)、別のバッチファイルが実行できます。コマンドを ずらずらっと並べて書くと 書かれた順にコマンドが実行できます。簡単なプログラムを組めば 繰り返し(for)、条件分岐(goto、if)などもできます。バッチファイルで使用できるコマンドは 以下の通りです。

Call

呼び元のバッチファイルを停止せずに、別のバッチファイルを呼び出して実行。

Echo

コマンドプロンプトで メッセージ表示を有効(echo on)または無効(echo off)に変更。

Endlocal

バッチファイルでの環境変数のローカライズを終了し、setlocal コマンドを実行する前の設定に復元。

For

一連のファイルに対して、指定したコマンドを反復して実行。

Goto

バッチファイル内で、指定したラベルの行に移動し、ラベルの次の行から実行。

If

指定した条件を満たす(あるいは満たさない)ときに コマンドを実行。コマンドの実行結果(errorlevel)、文字列比較、ファイルの存在有無(exist)などがあります。

Pause

バッチファイルの実行を一時中断し、続行する場合は任意のキーを押すように求めるメッセージを表示。

Rem

コメント(注釈)。バッチファイル内のコマンド、分岐条件などを後から見てもわかるように コメントとして記述しておくと便利です。

Setlocal

バッチファイル内の環境変数のローカライズを開始。対応する endlocal コマンドの指定行、またはバッチファイルの終わりに達すると、ローカライズは終了。

Shift

バッチファイルでバッチファイル起動時のパラメータ位置を変更。

よく使うのは Echo,For,Goto,If,Pause,Remで、知ってたら便利なのは Call,Shift です。

Windows ユーザー作成

Active Directoryを使用していれば ユーザー作成は GUIで簡単にできますが、ワークグループだと個々のコンピュータに同じ名前・パスワードのユーザーを作ったりするのが、結構な手間です。ローカル ユーザーの作成は NETコマンドでできます。構文は・・・
NET USER <ユーザー名> <パスワード> /add

例えば Adminっていうユーザーで パスワードが pwdの場合、以下の通りです。
NET USER Admin pwd /add

これをメモ帳などで書いて、[ファイル]→[名前を付けて保存]でファイルの種類を「すべてのファイル」にしてファイル名に 例えば ADDUSER.BAT と入力して [OK]で、バッチファイルができます。エクスプローラーでバッチファイルをダブルクリックするか、コマンドプロンプトを開いて バッチファイル名を入力すれば バッチファイルが実行され ユーザーが追加されます。

Windowsユーザーのグループ追加

ローカルユーザーを作成するところまでできても 権限を与えるために どこかのセキュリティグループに所属させる必要があります。簡単なところでは ローカル管理者グループ Administrators などの 既定グループですね。ローカルユーザーの グループ追加は NETコマンドでできます。構文は以下の通りです。
NET LOCALGROUP "<グループ名>" <ユーザー名> /add

例えば Adminっていうユーザーを Administratorsに追加する場合は以下の通りです。
NET LOCALGROUP "Administrators" Admin /add

レジストリ変更

レジストリの変更というと Windows自体の動作にまで影響する可能性があり びびってしまうのですが (^-^; システム管理者が どんな時にレジストリ変更をするかと言えば、例えば Windows XP SP2で ローカルポリシーの既定値が厳しいため ファイル共有などができない・・・なんてケースですね。ローカルポリシーの設定は レジストリにあるので それをちょっといじれば GUIでローカルポリシーを変更するのと同じことができます。既定では リモートからアクセスされた場合に Guestアカウントにアサインして 動作するような設定(値=0)になっているんですが これを従来のWindowsのように 指定されたアカウントで動作(値=1)に変えましょうっと。

レジストリ位置:
[HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥Lsa]
キー:forceguest
タイプ:dword
値:00000001

手順は 以下の通りです。
1) レジストリエディタ(regedit.exe)で レジストリ位置まで移動
2) 右クリック して [エクスポート]ってやると
3) その位置のレジストリがファイル(例: SetRegs.reg)に出力されます。
4) そのファイル(例: SetRegs.reg)を メモ帳などのテキストエディタで開き
5) 値を 00000000 から 00000001に変更して 保存。

バッチファイルから 1)~5)で作成したファイル(例: SetRegs.reg)をレジストリに結合するには
REGEDIT SetRegs.reg
ってやります。
ただし 確認のポップアップが2回ほど表示されちゃいますが(^-^;

Windowsサービス開始/停止

システムとして必要な Windowsサービスプログラムを、管理ユーザーが勝手に止めたりするのを防ぐため、あるいは業務システムで必要なWindowsサービスを動かしておくためなどのケースで Windowsサービスの開始(または停止)が必要になります。Windowsサービス開始/停止は NETコマンドでできます。構文は・・・
開始の場合
NET START
停止の場合
NET STOP

例えば RemoteRegistryサービスを開始する場合は
NET START RemoteRegistry

ちなみに Windowsサービスの名称は コントロールパネルのサービスで確認できます。

Windowsファイアウォールの設定

Windows XPのSP2で登場した Windowsファイアウォールですが 有効にしているとアプリケーションが動かないとか(^-^; 無効にしているとセキュリティが保てないとか 企業のシステム管理者を悩ませているかと・・・

Windowsファイアウォールの設定(有効化/無効化)は NETSHコマンドでできます。構文は・・・
有効にする場合
netsh firewall set opmode mode = ENABLE
無効にする場合
netsh firewall set opmode mode = DISABLE

Windowsファイアウォールを有効(または無効)にするバッチファイルを作って、スタートアップに入れておけば ユーザーがログインしたタイミングで バッチファイルが実行され、Windowsファイアウォールが有効(または無効)になります。

netsh firewallコマンドでは 有効/無効だけでなく Windowsファイアウォールの例外(プロトコル、ポート番号、プログラム)の設定などもできます。

Windowsネットワークでコンピュータを非表示に

開発用などの特殊なサーバーは、Windowsネットワークで 他のコンピュータからアクセスして欲しくない場合があります。このような場合には、NET CONFIG SERVERコマンドで 「/HIDDEN:YES」を使えば、サーバーコンピュータが非表示になります。

NET CONFIG SERVER /HIDDEN:YES

現在、表示されているか 否かは 以下のコマンドで確認できます。
NET CONFIG SERVER

現在オープンされている共有フォルダ・ファイルの表示

ファイルサーバーを停止したい時に、現在どの共有フォルダ・ファイルを どのユーザーがオープンしているかを知りたいケースがあります。このような場合には、NET FILEコマンドを使えば、現在利用しているサーバーの共有フォルダにアクセスしているユーザーが解ります。

NET FILE

NET FILEコマンドで 左側に表示されるID番号を指定すると アクセス許可(参照許可、更新許可など)が表示されます。
NET FILE (ID番号)

NET FILEコマンドで 左側に表示されるID番号と「/close」オプションを指定すると ID番号で指定された共有ファイルアクセスがクローズされます。
NET FILE (ID番号) /close



風水吉凶方位 風水吉凶方位 |  奇門遁甲 奇門遁甲 |  金運神社 金運神社 |  仏像 仏像 |  論語 論語 |  般若心経 般若心経 |  二十四節気 二十四節気 |  菜根譚 菜根譚 |  SharePoint活用 SharePoint |  OneNote活用 OneNote |  ICT活用 ICT