set コマンドとそのパラメータに関するヘルプ。 環境変数

30.07.2019 ソーシャルメディア

記事上で:

  • 変数の定義
  • コマンドライン変数(BATファイル呼び出しパラメータ)
  • IF 条件演算子
  • 機能
  • 戻り値の使い方(処理終了コード)

変数の定義

セット<Имяпеременной>=<Значениепеременной>

SET ステートメントは、オペレーティング システムのパラメータ操作機能を拡張したものです。 パーセント記号の間に名前が使用される場合は常に、その名前の値がその名前に置き換えられる変数を指定します。 したがって、設定されている場合 (変数を使用する多くのゲーム サウンドカードコンピューター):

セットブラスター=A220 I5 D1 P330

次に、バッチ ファイルで次の構造を使用する場合:

エコー%ブラスター%

画面に「A220 I5 D1 P330」と表示されます。 SET ステートメントを使用して定義された変数は環境変数と呼ばれ、実行後、DOS が再起動されるまで表示されます (メモリ内で手動で変更しない限り)。 つまり1本から使える バッチファイルまたは別のタスクの後のプログラム。 最も有名なのは PATH 変数です。これは、次のパスのセットです。 クイック検索ファイル。 これは autoexec.bat ファイルで設定されます。

コマンドライン変数
(batファイルを呼び出すためのパラメータ)

%<цифра 0-9>

他の言語と同様に、バッチ ファイル言語でも、bat ファイルのパラメータとして受け取った変数を使用できます。

合計 10 個の独立変数が同時に存在する可能性があります。 執筆用 複雑なプログラムこれは非常に小さいですが、通常の作業では 3 ~ 4 で十分です。 変数の値は、コマンド ラインの対応するパラメーターの値と等しくなります。 %0 変数には、.bat ファイルの名前と、指定した場合はそのファイルへのパスが含まれます。 つまり、次のパラメータを指定して abc.bat ファイルを実行したとします。

abc.bat a bc def

この場合、変数 %0 には値 abc.bat が含まれ、%1 には値 a が含まれ、%2 には bc が含まれ、%3 には def が含まれます。 このプロパティは、反復的な操作を処理する場合に多用途のバッチ ファイルを作成するために広く使用されています。

コマンド ラインから 10 個を超える変数を取得するには、SHIFT コマンドを使用します。

SHIFT コマンドでは 10 個を超えるコマンド ライン パラメータを使用できますが、対応する以前のパラメータは失われます。 つまり、SHIFT コマンドはすべての変数値を左に 1 ステップシフトします。 つまり、変数 %0 には変数 %1 に以前に含まれていた値が含まれ、変数 %1 にはシフト前の変数 %2 の値が含まれます。 ただし、この操作は不可逆的です。つまり、変数を元に戻すことはできません。

IF 条件演算子

幸いなことに、 コマンドインタープリタ最新の Windows 2000 以降の cmd.exe は、分岐構造内のコマンド ブロックをサポートしているため、ラベル付きの IF を使用する必要がなくなります。 コマンド ブロックは括弧で囲まれています。 これは次のようになります (C/C++ のインデント スタイルを模倣しています)。

if 条件 (

「then」分岐の Rem コマンド

レム…

) それ以外 (

「else」ブランチの Rem コマンド

レム…

具体的な使用例:

@エコーオフ

ビルドモード=%1を設定します

if "%BUILDMODE%" == "" (

エコー失敗: 引数が必要です ^(--debug, --release^)

出口 /b 1

rem 処理を簡素化するために引数からすべてのハイフンを削除します

set BUILDMODE=%BUILDMODE:-=%

if "%BUILDMODE%" == "デバッグ" (

CCFLAGS=/Od /MDd /Z7 を設定します

) それ以外 (

CCFLAGS=/O2 /MD を設定します

私の意見では、これは十分に耐え得ることです。 しかし、いつものように、人生は思っているほど単純ではありません。 問題が 1 つあります。 then ブロックと else ブロックで使用される変数は、ブロックの実行中ではなく、実行が開始される前に展開されます。 上の例では問題は発生しませんが、次の例では問題が発生します。

if "%BUILDMODE%" == "デバッグ" (

Echo INFO: デバッグ環境モードの設定

OPTFLAGS=/Od を設定します

CCFLAGS=%OPTFLAGS% /MDd /Z7 を設定します。

) それ以外 (

Echo INFO: 環境解放モードの設定

OPTFLAGS=/O2 を設定します

CCFLAGS=%OPTFLAGS% /MD を設定します

問題は、どちらのブロックでも、OPTFLAGS 変数の置換は、そのブロックの実行中に変更される前に行われることです。 したがって、CCFLAGS には、この if ブロックの実行が開始された時点で OPTFLAGS が持っていた値が書き込まれます。

この問題は、遅延変数展開を使用することで解決されます。 !に含まれる変数…! %...% の代わりに、その意味は直接使用したときにのみ明らかになります。 このモードデフォルトでは無効になっています。 これを有効にするには、cmd.exe を呼び出すときに /V:ON スイッチを使用するか、次のコマンドを使用します。

バットファイル自体のテキスト内。 私にとっては 2 番目の方法の方が便利だと思われます。特定のパラメータを指定してスクリプトを実行するよう誰かに要求するのは、あまりクールではありません。

そうは言っても、前の「間違った」例は次のように修正できます。

setlocal 有効遅延拡張

if "%BUILDMODE%" == "デバッグ" (

Echo INFO: デバッグモード環境のセットアップ

OPTFLAGS=/Od を設定します

CCFLAGS=!OPTFLAGS! を設定します。 /MDd /Z7

) それ以外 (

Echo INFO: リリースモード環境のセットアップ

OPTFLAGS=/O2 を設定します

CCFLAGS=!OPTFLAGS! を設定します。 /MD

これで、ほぼ本格的な if-then-else ブロックになります。 ほぼ、echo コマンドの 1 つで閉じ括弧に遭遇した場合は、^ 文字でそれをエスケープする必要があるためです。 構文アナライザー混乱した...

しかしいずれにせよ、これは非常識な数のタグとトランジションよりもはるかに優れています。

機能

バットファイルに関数を作成することは可能ですか? はい、できます。 さらに、それが必要な場合もあります。 確かに、これらは条件付きで関数を呼び出すことができます。

call コマンドには特別な構文があり、これを使用すると、同じバット ファイル内のマークに移動して、この呼び出しが行われた場所を記憶できます。

呼び出し:ラベル引数

関数は次のコマンドで返されます。

exit /b [オプションの戻りコード]

/b キーはここで非常に重要です。これがないと、関数ではなくスクリプト全体が終了します。

詳しくはダイヤル コマンドライン:

電話/?

出口 /?

興味深いことに、この構文の call コマンドは次の再帰呼び出しをサポートしています。 自動作成可変引数 %0 ~ %9 の新しいフレーム。 場合によってはこれが役立つこともあります。 コマンド言語での再帰階乗計算の典型的な例を次に示します。

@エコーオフ

呼び出し:階乗 %1

エコー %RESULT%

出口

rem 階乗値を計算する関数

レム ログイン:

rem %1 階乗を計算する数値

rem 出力:

rem %RESULT% 階乗値

:階乗

if %1 == 0 (

RESULT=1 を設定します

/b を終了します

if %1 == 1 (

RESULT=1 を設定します

/b を終了します

set /a PARAM=%1 - 1

呼び出し:階乗%PARAM%

set /a RESULT=%1 * %RESULT%

/b を終了します

作品例:

>階乗.bat 10

3628800

戻り値の使用
(処理プログラムの終了コード)

プログラムは作業を完了すると、終了コードをオペレーティング システムに返します。 正常に完了した場合はゼロを返し、それ以外の場合はエラー コードを返すのが通例です。 場合によっては、あるいはむしろ頻繁に、プログラムはその操作の詳細をバッチ ファイルで「学習」できるように、「意図的に」ゼロ以外の値を返します。 たとえば、プログラムは押されたキーのコードを返し、.bat ファイルはそれに基づいてさまざまなアクションを実行します。

バッチファイルは、実行されたプログラムの終了コードをどのようにして見つけることができるのでしょうか? ERRORLEVEL キー変数はこの目的のために提供されています。

エラーレベルを含むバッチ ファイルの例:

@エコーオフ

REM プログラム prg1.exe を実行します。

PRG1.EXE

REM 補完コード分析

エラーレベル 2 の goto ファイルが見つからない場合

エラーレベル 1 の場合 goto ライターエラー

エラーレベル 0 の場合は終了に進みます

後藤 ONEXIT

:ファイルが見つかりません

エコーエラー! ファイルが見つかりません!

後藤 ONEXIT

:書き込みエラー

ECHO 録音エラー!

後藤 ONEXIT

:EXITOK

ECHO プログラムは正常に完了しました。

後藤 ONEXIT

:ONEXIT

終了コードの分析はゼロから開始されるのではなく、可能な最大値から開始されることに注意してください。 実際、そのようなチェックは「errorlevel が値以上の場合、...」を意味します。 つまり、ゼロからチェックすると、最初の行ではどの値も true になりますが、これは正しくありません。

これは、この種のプログラムで最も一般的なエラーです。

変数は Cmd.exe 環境を設定します。 これらはコマンド シェルの動作だけでなく、OS 自体も規定します。 変数は、システムとローカルという固有のプロパティを持つ 2 つのタイプに分類する必要があります。 最初のタイプでは、作業中のグローバル OS 環境の動作を設定できます。 ローカル変数は、環境のアクティビティを Cmd.exe の特定のインスタンスにのみ設定します。 これは重要な違いとして注意する必要があります。

システム変数についての彼の話は、システム変数は OS にプリインストールされており、すべてのアプリケーションで使用できるということです。 これらを変更するには、管理者のアクセス権が必要です。 最も一般的なアプリケーションは、システム起動タスクを提供することです。 このようなイベントが特定のユーザーに対して実行される場合、ローカル変数を使用する可能性について話すことができます。

以下は、優先順位の重要性に基づいた既存の変数クラスのリストです (降順)。

  • 内蔵システム。 それらは最も深刻なものと言わなければなりません。 特別な注意進行中。
  • 変数 システムタイプ、HKEY_LOCAL_MACHINE に関連します。
  • 変数 ローカルタイプ、HKEY_CURRENT_USERに関連します。
  • 完全なリスト Autoexec.bat ドキュメントにある変数と環境。
  • システム起動スクリプトに含まれる変数と環境の完全なリスト。 特定の状況では、それが存在しない可能性があります。
  • 記述されたスクリプトまたはバッチ ドキュメントに対話的に変数を適用します。

ローカルまたはシステム カテゴリに分類される変数のリストは非常に長いです。 この問題にはさらに注意を払う必要があります。

ローカル変数

名前 情報

%ALLUSERSPROFILE%

すべてのユーザーのプロファイルが正確にどこにあるかに関する情報を提供します。

プログラムのデフォルトの場所を提供します

使用しているフォルダーへのパスを取得できます

Cmd.exe の現在のインスタンスを実行するために使用されるコマンド ラインを提供します。

指定されたセッションを認証しているドメイン コントローラーの名前を提供します。

現在のインタープリターに KA パラメーターを提供できます。 アクセスするには、Cmd.exe を使用する必要があります。

ユーザーアカウントのリストが含まれるドメインの名前を提供します。

ログインしているユーザーの名前を提供します

現在のユーザーのアカウントのポジションを返します

システム変数

現在のコマンド プロセッサ拡張機能のバージョン番号を指定できます。

作業が実行されているデバイスの名前を提供します

実行可能なコマンド シェルへのパスを返します。

有効な情報を提供します。 date /t と同様の形式を使用することを目的としていることに注意してください。 指定されたコマンドに関するすべての情報は、サイトの対応するセクションから直接取得できます。

最後に使用したコマンドのエラー コードを提供するために使用されます。 標準的な状況では、ゼロ以外の値が存在します。

ユーザーのディレクトリに関連付けられているワークステーション ディスクの名前を提供します。 メインディレクトリの場所に基づいてインストールする必要があります

ユーザーのメインディレクトリへのパスを提供します。 メインディレクトリの場所に関する情報に基づいてインストールする必要があります

ユーザーの共通メイン ディレクトリへのパスを提供します。 メインディレクトリの場所に関する情報に基づいてインストールする必要があります

%NUMBER_OF_PROCESSORS%

特定のデバイスが搭載するプロセッサの数を決定します

OSの名前に関する情報を転送します 特定のデバイス。 一部の種類の OS には名前を表示する特定の機能があるため、これを考慮する必要があります。

プログラムを検出するための検索パスを設定します

OS によって実行可能と見なされるドキュメント拡張子のリストを提供します。

%PROCESSOR_ARCHITECTURE%

特定のプロセッサのアーキテクチャを取得する必要がある場合に使用されます。

%PROCESSOR_IDENTFIER%

提供します 短い情報プロセッサについて

%PROCESSOR_LEVEL%

プロセッサーのリビジョン番号に関する情報を提供します。

0 ~ 32767 の範囲の任意の整数を指定します

Windows XPのルートディレクトリが記録されているディスクの名前を提供します。

OSシステムディレクトリの場所を提供します。

これらの変数はシステムとユーザーです。 これにより、同じタスクを実行できるようになります。 さまざまな状況。 すべてのユーザーが使用できる一時フォルダーを提供します。 のために 特定のプログラム TEMP または TMP を使用する必要があります。

の時間情報を提供します。 この瞬間。 time /t と同様の表示形式が使用されます。

OS ディレクトリを返すことができます

環境変数の設定

環境変数を作成、削除、または公開するには、特別な set コマンドを使用する必要があります。 特徴的な機能は、オペレーティング シェル環境のみで変数を調整できることです。

特定の変数を発行するには、KS に次のように記述することが提供されています。

変数名を設定する

別の変数を追加するには、次のように記述します。

変数名=値を設定します

削除手順を実行するには、次の行を記述する必要があります。

変数名=を設定します

システムは、値として機能するほとんどの既存のシンボルの使用を指定します。 プロデルもここに含めることができます。 特定の文字を使用するには、最初に (^) を入力するか、文字を引用符で囲む必要があります。 そうしないと、誤った実行やエラーが発生する可能性があります。 いくつかの点を考慮する必要があります 簡単な例。 new&name 変数を作成する必要があるとします。 このタスクを実行するには、CS に次の内容を入力します。

変数名=新しい^&名前を設定します

特殊文字 (^) を使用しないようにすることもできますが、それは不可能です。 理由は、同じエラーが発生し続けるためです。

変数を設定する場合、大文字、小文字は関係ありません。 大文字と小文字は考慮されません。 ここに一つ 特徴的な機能- 変数は入力されたとおりに表示されます。 これにより、名前を書くときに異なるレジスタを使用して区別する場合に認識しやすくなります。

環境変数への代入

置き換える方法もあります 特定の値 CS またはスクリプトから直接環境変数に設定します。 このタスクを実行するには、パーセント記号を使用することをお勧めします。 次のようになります。

%変数名%

これは、Cmd.exe が特定の変数の値に直接アクセスする必要があるという事実を示すことを目的としています。 文字ごとの比較手順は実行されません。 置換自体は再帰的とはみなされないという事実を考慮することが重要です。 チェックは 1 回のみ実行されます。

cmd.exe シェル環境は、シェルとオペレーティング システムの動作を制御する変数によって定義されます。

2 つのタイプを使用して、シェル環境またはオペレーティング システム環境全体の動作を定義できます。 環境変数: システムとローカル。

システム環境変数はグローバル オペレーティング システム環境の動作を定義し、ローカル環境変数は cmd.exe の特定のインスタンス内の環境の動作を定義します。

システム環境変数はオペレーティング システムにデフォルトで設定されており、誰でも利用できます。 Windowsプロセス、管理者権限を持つユーザーはこれらの変数を変更できます。 これらの変数は、ログイン スクリプトで最もよく使用されます。

ローカル環境変数は、その環境変数を作成したユーザーがログインしているときに使用できます。 レジストリ ハイブのローカル変数 HKEY_CURRENT_USERは現在のユーザーに対してのみ有効ですが、グローバルなオペレーティング システム環境の動作を定義します。

変数タイプの優先順位の降順のリスト。

  1. 組み込みシステム変数
  2. レジストリ ハイブ システム変数 HKEY_LOCAL_MACHINE
  3. レジストリ ハイブのローカル変数 HKEY_CURRENT_USER
  4. すべての環境変数とパスがファイルにリストされます。 Autoexec.bat。
  5. すべての環境変数とパスはログイン スクリプト (存在する場合) で指定されます。
  6. スクリプトまたはバッチ ファイルで対話的に使用される変数

コマンド シェルでは、cmd.exe の各インスタンスは親アプリケーションの環境を継承するため、新しい cmd.exe 環境で変数を変更できますが、これは親アプリケーションの環境には影響しません。

Windows XP のシステム環境変数とローカル環境変数のリストを次に示します。

変数

説明

%ALLUSERSPROFILE%

地元

「すべてのユーザー」プロファイルの配置を返します。

地元

アプリケーション データのデフォルトの場所を返します。

地元

現在のフォルダーへのパスを返します。

地元

Cmd.exe のこのインスタンスを起動するために使用されたコマンド文字列を返します。

システム

現在のコマンド プロセッサ拡張機能のバージョン番号を返します。

システム

コンピュータ名を返します。

システム

実行中のコマンド シェルへのパスを返します。

システム

現在のデータを返します。 コマンドと同じ形式を使用します 日付/t。 Cmd.exe コマンドによって作成されます。

システム

最後に使用したコマンドのエラー コードを返します。 ゼロ以外の値は通常、エラーを示します。

システム

ユーザーのホーム ディレクトリに関連付けられたローカル ワークステーション ドライブの名前を返します。 メインディレクトリの場所に基づいて設定します。 ユーザーのホーム ディレクトリはスナップインで指定されます。 ローカルユーザーそしてグループ。」

システム

戻り値 フルパスユーザーのホームディレクトリに移動します。 メインディレクトリの場所に基づいて設定します。 ユーザーのホーム ディレクトリは、ローカル ユーザーとグループ スナップインで指定されます。

システム

ユーザーの共有ホーム ディレクトリへのネットワーク パスを返します。 メインディレクトリの場所に基づいて設定します。 ユーザーのホーム ディレクトリは、ローカル ユーザーとグループ スナップインで指定されます。

地元

現在のセッションを認証したドメイン コントローラーの名前を返します。

%NUMBER_OF_PROCESSORS%

システム

コンピューターにインストールされているプロセッサーの数を指定します。

システム

オペレーティング システム名を返します。 で Windowsを使用する 2000 のオペレーティング システム名は Windows_NT として表示されます。

システム

の検索パスを指定します 実行可能ファイル.

システム

考慮されるファイル拡張子のリストを返します。 オペレーティング·システム実行可能ファイルとして。

%PROCESSOR_ARCHITECTURE%

システム

プロセッサのアーキテクチャを返します。 値: x86、IA64。

%PROCESSOR_IDENTFIER%

システム

プロセッサの説明を返します。

%PROCESSOR_LEVEL%

システム

コンピューターにインストールされているプロセッサーのモデル番号を返します。

%PROCESSOR_REVISION%

システム

プロセッサのリビジョン番号を返します。

地元

現在のインタープリタのコマンド ライン オプションを返します。 Cmd.exe コマンドによって作成されます。

システム

0 ~ 32767 の任意の 10 進数を返します。Cmd.exe コマンドによって作成されます。

システム

Windows XP のルート ディレクトリ (システム ディレクトリ) を含むドライブの名前を返します。

システム

システムの位置を返します Windows ディレクトリ XP。

システムとユーザー

ログインしたユーザーがアクセスできるアプリケーションによって使用されるデフォルトの一時フォルダーを返します。 アプリケーションによっては TEMP 変数が必要な場合もあれば、TMP 変数が必要な場合もあります。

システム

戻り値 現在の時刻。 コマンドと同じ形式を使用します 時間/t。 Cmd.exe コマンドによって作成されます。

地元

ユーザー アカウントのリストを含むドメインの名前を返します。

地元

ログインしているユーザーの名前を返します。

地元

現在のユーザーのプロファイルの配置を返します。

システム

オペレーティング システム ディレクトリの場所を返します。


0.00 (1 )

一般的方法。

コマンドファイルは テキストファイル拡張子付き コウモリまたは cmd、その行はコマンドまたは実行可能ファイルの名前を表します。 バッチ ファイルを実行すると、制御はオペレーティング システムのコマンド プロセッサ (コマンド インタープリタと呼ばれることが多い) に引き継がれ、バッチ ファイル内の行を順番に読み取って解釈します。 Windows9Xの場合はこれで完了です コマンド.com、WinNT/2K/XP の場合 - cmd.exe。 バッチ ファイル行には、コマンド プロセッサ自体からのコマンド (FOR、GOTO、IF など) または実行可能モジュールの名前 (net.exe、regedit.exe、win.com など) を含めることができます。 WinNT/2K/XP オペレーティング システムでは、次のことが可能です。 簡単な情報コマンドラインを使用したコマンドの構成に従って:

または特定のコマンドによって:

HELP コマンド名

ヘルプ テキストを画面上ではなくファイル内に表示するには、次を使用できます。 出力リダイレクト 。 コマンドラインを使用する場合、 標準デバイス入力デバイスはキーボード、出力デバイスはディスプレイですが、これらのデバイスはリダイレクト文字を使用して再マッピングできます。

< - 入力リダイレクト

> - 出力リダイレクト (または > > - へのリダイレクト 既存のファイル、出力データがファイルの末尾に追加される場合。)

コマンドデータストリームを出力するにはヘルプhelp.txt ファイルのコマンド ラインは次のようになります。

ヘルプ > help.txt

goto.txt ファイル内の GOTO コマンドのヘルプを表示するには、次のようにします。

ヘルプ GOTO > goto.txt

環境変数の使用。

バッチファイル使用できますし、多くの場合使用する必要があります 環境変数 - コマンドまたはバッチ ファイルが実行される環境を特徴づける値を持つ変数。 環境変数の値は、OS の起動時とユーザーがシステムに登録するときに生成され、コマンドを使用して設定することもできます。セット、その形式は次のとおりです。

SET [変数=[文字列]]

変数環境変数名。

ライン指定された変数に代入される文字列。

たとえば、コマンドライン

SET マイナン=ヴァシャ

値 Vasya を取る変数 myname を追加します。

パーセント記号 ( %) 。 たとえば、コマンド

time という単語とコマンドが表示されます

現在の時刻の値を取得する時間変数の値が表示されます。

そしてコマンドライン

SET PATH=C:myprog;%path%

検索パスに追加されます 実行可能プログラム、PATH 変数の値、ディレクトリ C:myprog によって記述されます。

パラメータを指定せずに SET コマンドを実行すると、変数の現在の値が次の形式で画面に表示されます。

NUMBER_OF_PROCESSORS=1 - プロセッサの数

OS=Windows_NT - OS の種類

Path=E:WINDOWSsystem32;E:WINDOWS;E:Program FilesFar - 実行可能ファイルの検索パス。

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH - 実行可能ファイルの拡張子。

PROCESSOR_ARCHITECTURE=x86 - プロセッサ アーキテクチャ。

PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1、AuthenticAMD - プロセッサ識別子。

PROCESSOR_LEVEL=6 - プロセッサ レベル (モデル番号)。

PROCESSOR_REVISION=0801 - プロセッサのバージョン。

ProgramFiles=E:Program Files - 「Program Files」フォルダーへのパス

PROMPT=$P$G - コマンド ライン プロンプトの形式 $P - 現在のディレクトリのパス $G - ">" 記号。

SystemDrive=E: - 文字 システムディスク.

SystemRoot=E:WINDOWS - Windows OS ディレクトリ。

一部の変数の値は、SET コマンドでは返されません。 これらは値が動的に変化する変数です。

%CD% - 現在のディレクトリ文字列の値を取得します。

%DATE% - 値を受け入れます 現在の日付.

%TIME% - 現在の時刻値を受け入れます。

%RANDOM% - 1 ~ 32767 の範囲のランダムな 10 進数の値を受け入れます。

%ERRORLEVEL% - タスクの終了コード ERRORLEVEL の現在値を受け入れます

%CMDEXTVERSION% - 拡張コマンド処理用の CMD.EXE コマンド プロセッサのバージョンの値を取得します。

%CMDCMDLINE% - シェルを呼び出した行の値を取得します。

コマンドラインを使用して変数の値を表示できます。

エコー %変数%

バッチファイルのパラメータを入力します。

コマンド ライン パラメータをコマンド ファイルに渡し、その値をコマンド ファイル自体のステートメントで使用することができます。

BATファイル< параметр1 > , < параметр2 >, ... < параметрN >

バッチ ファイル自体では、最初のパラメーターは変数として使用できます。 %1 、 2番 - %2 等々。 バッチファイル自体の名前は変数として使用できます %0 。 たとえば、入力されたパラメータの値を画面に表示することをタスクとするバッチ ファイルを作成してみましょう。 通常、テキストを表示するために使用されるコマンドは次のとおりです。

エコー< текст >

ただし、テキストが %1 に置き換えられると、最初のパラメータが返され、%2 - 2 番目のパラメータなどが返されます。

次の内容を含む parm.bat ファイルを作成します。

echo 最初のパラメータ=%1

echo 2 番目のパラメータ=%2

echo 3 番目のパラメータ = %3

次のコマンドで実行します。

parm.bat 最初の 2 番目の「2 つの単語」

実行すると、その仕組みと、スペースを含むパラメータを で囲む必要があることがわかります。 二重引用符。 コマンド プロセッサによって処理された行が画面に表示されないようにするには、次のコマンドを使用できます。エコーオフ、バッチ ファイルの最初の行に配置します。 バッチ ファイル内の行をシェルで無視するには、その行を行の先頭に置きます。R.E.M.< пробел > 。 このようにして、コメントを配置できます。これは、大きなバッチ ファイルで役立つことがよくあります。

rem ECHO OFF は、コマンド ファイル行の内容を画面上に表示するモードをオフにします。

REM は実行結果のみを表示します。

echo 最初のパラメータ=%1

echo 2 番目のパラメータ=%2

echo 3 番目のパラメータ = %3

ECHO OFF を @ECHO OFF に置き換えてみてください。結果がすべてを物語っています。 出力モードをオフにする行が画面に表示されなくなりました。

トランジションとラベル。

バッチ ファイルでは、特定の条件の充足に応じて操作のロジックを変更する条件付きジャンプ コマンドを使用できます。 条件分岐の使用法を説明するために、事前に決定されたドライブ文字を割り当てることを目的としたバッチ ファイルを作成しましょう。 リムーバブルメディア、フラッシュドライブとして使用されます。 条件は次のとおりです。フラッシュ ドライブが 2 つあり、接続されている USB ポートに関係なく、エクスプローラーで 1 つがドライブ X: として表示され、もう 1 つがドライブ Y: として表示されます。 と仮定します。 本物の車輪 F: または G: として接続できます。 特定の名前のファイルの存在によってディスクを識別します (そのようなファイルをルート ディレクトリに隠し、珍しい名前を付けることをお勧めします)。

Flashd1.let - 最初のディスク上

Flashd2.let - 2番目

それらの。 バッチ ファイルの目的は、 リムーバブルディスク F:そして G:ファイル Flashd1.letまたは Flashd2.letそして、どちらが存在するかに応じて、ドライブ文字を割り当てます。 バツ:または Y:

ディスク上のファイルを検索するには、次のコマンドを使用します。存在する場合:

IF EXIST ファイル名コマンド

コマンドとして使用する最も簡単な方法は次のとおりです。サブスト、ドライブ名とディレクトリと一致します。

サブスト X: C: - 作成します 仮想ディスク X:、その内容はドライブ C: のルート ディレクトリになります。

次の行を含むバッチ ファイル setXY.bat を作成します。

このようなファイルを実行すると、ドライブ X: と Y: が作成されます。しかし、そのようなファイルを再度実行すると、SUBST コマンドによってエラー メッセージが表示されます。結局のところ、ドライブ X: と Y: はすでに存在しています。

仮想ディスク X: および Y: がすでに作成されている場合は、SUBST の実行をバイパスすることをお勧めします (または、マウントする前に -d オプションを指定した SUBST を使用してそれらを削除します)。 次を使用してバッチ ファイルを変更します後藤- ラベルごとにバッチ ファイルの行に制御を移します。

後藤ラベル

ラベルは次のとおりである必要があります 別行そしてコロンで始まります。 エラー メッセージが表示されないようにバッチ ファイルを変更しましょう。

X が存在しない場合は REM - SETX ラベルに移動します

存在しない場合 X: GOTO SETX

X が存在する場合は REM: - Y の存在の確認に進みましょう:

IF EXIST G:flashd1.let SUBST X: G:

IF EXIST F:flashd1.let SUBST X: F:

Y: が存在する場合は REM - バッチ ファイルを完成させます。

存在する場合 Y: 出口へ移動

IF EXIST G:flashd2.let SUBST Y: G:

IF EXIST F:flashd2.let SUBST Y: F:

REM バッチファイルから終了

SUBST エラー メッセージが表示されなくなりました。 コマンド実行時のエラーの兆候は、変数を分析することでコマンド ファイル自体で追跡できます。エラーレベル、その値はほとんどのプログラムの実行中に形成されます。 ERRORLEVEL は、プログラムがエラーなしで完了した場合は 0、エラーが発生した場合は 1 です。 実行プログラムで提供されている場合は、他の値が存在する可能性があります。

バッチ ファイルをバッチ ファイル内の行のコマンドとして使用することもできます。 さらに、呼び出したバッチ ファイルの実行時点に転送して戻るには、次のコマンドを使用します。電話。 次の内容のコマンド ファイル test.bat を作成しましょう。

エコーコール1.bat

エコーリターン。

コマンドを含む 1.bat ファイル一時停止、何らかのキーが押されるまでバッチ ファイルの実行を一時停止します。

test.batを実行すると画面にメッセージが表示されます

1.batを呼び出す

そして、pause コマンドによって制御が 1.bat に渡されます。 キーボードのキーを押すと、制御はコマンドライン「ECHO Return」に渡されます。 そしてそれが画面に表示されます

test.bat から CALL を削除すると、ファイル 1.bat からの復帰は実行されません。 ちなみに、バッチファイルに制御を移すことで、ループさせることができます。 test.bat ファイルの末尾に次の行を追加してみてください。

CTRL キーと Break キーを同時に押すと、バッチ ファイルのループから抜け出すことができます。 CALL コマンドを使用して、バッチ ファイル内のプロシージャを呼び出すことができます。 この場合、引数は外部ファイルの名前ではなく、ラベルです。
....
呼び出し:proc1
....
:proc1
....
出口
....

ファイルを作成しています。

Windows ではありません 特別チームファイルを作成する必要がありますが、いくつかの方法でファイルを作成せずに簡単に作成できます。

コンソールからファイルへのコピー

コピーコンmyfile.txt

このコマンドを実行すると、キーボード (CON デバイス) からのデータがファイル myfile.txt に書き込まれます。 F6 を押すか、 CTRL-Z の組み合わせ出力が完了します。

出力リダイレクト

ECHO 1 > myfile.txt

このコマンドを実行すると、文字「1」を含むファイル myfile.txt が作成されます。

入力リダイレクトと出力リダイレクトの組み合わせ:

コピーコン > myfile.txt< xyz

このコマンドを実行するときは、最初のケースと同様に、コンソールからファイルへのコピーが使用されますが、キーボードからの入力の代わりに、存在しないデバイス xyz からの入力が使用されます。 システムは、そのようなデバイスが存在しないことを示すメッセージを表示しますが、空のファイル myfile.txt は正常に作成されます。
非常に簡単なオプションは、次の名前の架空のデバイスからコピーすることです。 ヌルファイルへ。
nullのmyfile.txtをコピーします

空のファイルを頻繁に作成する必要がある場合は、独自のバッチ ファイル (例: newfile.bat またはさらに良い例: nf.bat) を用意し、名前を付けることができます。 作成されたファイル起動時にパラメータとして渡します。

ファイルの内容:

このバッチ ファイルをシステム ディレクトリ (C:windowssystem32 または PATH 検索パスにあるもの) に配置します。

コマンドライン:

新しいファイル.bat 私のファイル.txt

または

nf.bat myfile.txt

または
nf myfile.txt

ここがあなたのチームです NFコマンドラインで空のファイルを作成します。

同じドライブ文字をリムーバブル ドライブに割り当てます。

課題は取り外し可能にすることです USBディスク(フラッシュ ドライブ) は、どのコンピュータで使用されているか、どのように接続されているかに関係なく、常に同じ文字で使用できました。 これを解決するには、上で説明した SUBST コマンドを使用します。 リムーバブル ディスクに使用する文字を選択しましょう (例: X)。バッチ ファイルが起動されたディスクの名前は、変数 %~d0 として使用できます。 次の内容のバッチ ファイルを作成します。
@エコーオフ
部分 X: %~d0
に関連付けられた仮想ディスク X: を作成するとはどういう意味ですか? 物理ディスク、バッチファイルが起動された場所から。
%0 変数の置換値に関する追加の洞察は、次のバッチ ファイルから取得できます。

@エコーオフ
エコー ファイル処理中 - %0
ECHO バッチ ファイルが作成/変更された日付/時刻 - %~t0
ECHO バッチ ファイル パス - "%~f0"
ECHO コマンド ファイル ディスク - %~d0
ECHO バッチ ファイル ディレクトリ - "%~p0"
ECHO バッチ ファイル名 - %~n0
ECHO バッチ ファイル拡張子 - %~x0
エコー 略称および拡張子 - %~s0
ECHO バッチ ファイルの属性 - %~a0
ECHO バッチ ファイル サイズ - %~z0

日付と時刻に基づいてアーカイブの世代を作成します。

次の問題を解決しましょう。C:Program FilesFAR ディレクトリにあるファイルのアーカイブを作成する必要があります。 アーカイブ ファイルの名前は現在時刻 (時間.分.秒 - HH.MM.SS.rar) で構成され、次の場所に配置される必要があります。 新しいカタログ、名前は現在の日付 (日.月.年 - DD.MM.YYYY) で構成されている必要があります。 アーカイブには RAR アーカイバーを使用します。 アーカイブを作成するための起動形式:

RAR または -r< путь и имя архива > < Путь и имя архивируемых данных >

ある- アーカイブ作成コマンド。
-r- サブディレクトリのアーカイブを決定するキー (ソース フォルダー内にサブディレクトリがあるため)。

したがって、この問題を解決するには、RAR の名前とパスを正しく作成する必要があります。 このために、次の要素を使用します。

  • バッチ ファイルでは、現在の日付と時刻 (変数 %DATE% および %TIME%) にアクセスできます。
  • バッチ ファイルでは、SET コマンドを使用して一時変数を作成できます。
  • 一時変数の値は、同じ SET コマンドを使用して、%DATE% および %TIME% の部分をスキップおよび/または置換することにより、それらに基づいて形成できます。

    %DATE% 変数から取得される日付。 標準設定地域設定は次のようになります。
    2005 年 1 月 21 日月曜日・曜日(2文字)・スペース・日付(10文字)
    たとえば、MDコマンドでディレクトリを作成してみましょう。< имя каталога >.
    メモリ内に一時変数 VDATE を作成し、最初の 3 文字を除いた環境変数 DATE の値 (01/20/2005) を割り当てます。

    VDATE=%date:~3% を設定します

    ドライブ C: にディレクトリを作成します。その名前は VDATE 変数からの現在の日付です。

    MD C:\%VDATE%
    このコマンドを実行すると、01/20/2005 という名前のディレクトリがドライブ C: に作成されます。

    %TIME% 変数から取得される時間:
    14:30:59.93 - 時、分、秒、100分の1秒。
    アーカイブ ファイル名に 100 の位はおそらく不要です。 一時変数 VTIME を作成し、最後の 3 文字を除いた現在の時刻を割り当てます。
    set VTIME=%time:~0,-3%
    現在 VTIME = 14:30:59 ですが、ファイル名に「:」記号は使用できないため、ドットに置き換えます。
    VTIME=%VTIME::=.% を設定します
    VTIME 変数は、ファイル名として値 14.30.59 を取得します。

    アーカイバーを起動しましょう。

    これで、次の内容のバッチ ファイルを作成できます。

    VDATE=%date:~3% を設定します
    md c:\%VDATE%
    set VTIME=%time:~0,-3%
    VTIME=%VTIME::=.% を設定します
    rar a -r C:\%VDATE%\%VTIME%.rar "C:Program filesfar*.*"

    このようなバッチ ファイルは、ユーザーがドメインにログインするとき、またはスケジューラを使用するときに、自動ロードを通じて、またはスクリプトの一部として実行できます。 指定された時間、重要なデータの時系列アーカイブを常に利用できるようになります。

    ユーザープロファイル変数を使用したアーカイブの作成。

    このバッチ ファイルは、Win2K/XP ユーザーの「マイ ドキュメント」フォルダの内容のアーカイブを作成し、ディレクトリに配置します。
    C:ARHIVマイドキュメントユーザー名日付時刻

    変数 USERPROFILE、USERNAME、WINDIR が使用されるため、このバッチ ファイルは WIN9X では動作しません。 (ただし、必要に応じて、autoexec.bat にコマンドを挿入してこれらの変数の値を設定し、事実上変更を加えずにシングルユーザー バージョンで使用することもできます)。 バッチ ファイルの内容はコメント化されており、前の例を理解していればそれほど難しいことはありません。

    @エコーオフ
    rem FROM 変数を設定します - アーカイブするデータを取得する場所
    set FROM=%USERPROFILE%マイドキュメント
    rem 変数 TO - アーカイブの配置場所を設定します。
    set TO=C:arhivMy document\%USERNAME%
    rem メンテナンスディレクトリを作成しましょう
    md "%TO%"
    rem 現在の日付からサブディレクトリの名前を作成しましょう
    rem Win2K のデフォルト設定での現在の日付 - 2005 年 4 月 25 日月曜日
    rem WinXP のデフォルト設定での現在の日付 - 04/25/2005
    rem 現在の日付からサブディレクトリの名前を形成します - 04/25
    rem デフォルトでは、WinXP の Windir は C:WINDOWS、Win2K の場合は C:WINNT です。
    IF /I %Windir% == C:WINNT GOTO Win2K
    vdate=%DATE を設定:~0.-5%
    GOTO SetFileName
    :Win2K
    set vdate=%DATE:~3.-5%
    rem 現在時刻 - 12:00:00.99 からアーカイブファイル名を作成しましょう
    rem 100 分の 1 秒を破棄し、記号: を記号に置き換えます。 結果 - 12.00.00
    :Setファイル名
    set vtime=%TIME:~0,-3%
    set vtime=%vtime::=.%
    rem アーカイブ ファイルのサブディレクトリを作成します
    md "%TO%\%VDATE%"
    rem アーカイブ用のコマンド。 サブフォルダーを使用してアーカイブするには -r スイッチが必要です
    レムオプション アーカイバ ARJ: arj a -r "%TO%\%VDATE%\%VTIME%.arj" "%FROM%*.*"
    レム使用時 RAR アーカイバ:
    rar a -r "%TO%\%VDATE%\%VTIME%.rar" "%FROM%*.*"

    スケジュールに従ってコマンドを実行します。

    WIN2K/XP にはコマンド ライン ユーティリティがありますで、コマンドまたはバッチ ファイルを実行できるようにします。 指定された時間ローカルまたは リモートコンピュータ。 AT コマンドを使用するには、タスク スケジューラ サービスが実行されている必要があります (通常はシステムのインストール時にデフォルトで開始されます)。

    AT [\コンピュータ名] [ [コード] | /消去 ]

    AT [\コンピュータ名] 時刻

    [ /EVERY:day[,...] | /NEXT:day[,...]] "コマンド"

    \コンピュータネームリモートコンピュータの名前。 このパラメータを省略した場合、

    ローカルコンピュータが使用されます。

    コード スケジュールされたタスクのシーケンス番号。 キーを使用して、すでにスケジュールされたタスクをキャンセルする必要があるかどうかを示します。 /消去.

    /消去スケジュールされたタスクをキャンセルします。 タスクコードを省略した場合、

    指定されたスケジュールにスケジュールされたすべてのタスク

    コンピューター。

    /はい全キャンセル時のキャンセル確認リクエスト

    計画されたタスク。

    時間コマンドを開始する時間です。

    /相互の作用ユーザーとのタスク対話を許可し、

    タスクの開始時にコンピューターで作業していること。 このキーを使用せずに起動されたタスクは、コンピューター ユーザーには表示されません。

    /毎日[、...]タスクは指定された曜日に起動されます。または、

    月。 日付を省略した場合は、現在の日付が使用されます

    /翌日[、...]タスクは次の指定された曜日に実行されます

    (たとえば、来週の木曜日)。 日付を省略した場合は、

    現在の日付が使用されます。

    "チーム"コマンドまたはバッチファイルの名前。

    使用例:

    「目覚まし時計」に似たもの - 現在の時刻や時刻を思い出させるテキストが表示されるポップアップ ウィンドウ 指定されたユーザーに何らかの行動を起こす必要性について。 ユーザーにメッセージを送信するには、ユーティリティを使用しますNET.EXE

    13:50 net.exe 送信 * コーヒーの時間

    17:50 net.exe でユーザーに帰宅時刻を送信

    AT \SERVER 13:45 net.exe 送信 サーバーを再起動する必要があります

    スケジュールされたタスクのリストを表示します。

    すでにスケジュールされているタスクを削除する:

    AT 3 /削除- タスク番号 3 の削除

    AT /削除 /YES- すべてのタスクを削除する

    「コントロールパネル」-「スケジュールされたタスク」では、チームによって作成されたタスクを表示、変更、削除できます。 タスク。

    システムサービスの停止と開始。

    コマンド ラインから Win2K/XP サービスを停止および開始するには、NET.EXE コマンドを使用します。

    NET.EXE 停止< имя службы >

    NET.EXE の開始< имя службы >

    短い名前と完全な名前の両方を使用することができます (「Dnscache」は短い名前、「DNS クライアント」はサービスの完全な名前です)。 スペースを含むサービス名は二重引用符で囲まれます。 「DNSクライアント」サービスの再起動例

    ネットストップ「DNSクライアント」

    ネットスタート「DNSクライアント」

    同じように短い名前を使用します。

    ネットストップ Dnscache

    ネットスタートDnscache

    サービスの完全な名前は「サービス」からコピーできます。< Имя службы >- 「プロパティ」 - 「表示名」

    サービスを管理するには、PsTools ユーティリティの PsService.exe ユーティリティを使用する方がはるかに便利です。このユーティリティはインストールする必要がなく、どの Windows OS でも動作します。 サービスの開始と停止に加えて、検索も可能です 特定のサービスコンピュータ上で ローカルネットワーク、サービスのステータスと構成をポーリングし、スタートアップの種類を変更し、サービスを一時停止し、続行し、再起動します。

    一緒に働くには システムサービス Windows XPでは、ユーティリティを使用できます sc.exeこれにより、サービスを停止/開始するだけでなく、そのステータス、起動パラメータ、動作パラメータをポーリングしたり、構成を変更したり、システム サービスだけでなくドライバも操作したりすることができます。 権限がある場合は、ローカル マシンだけでなくリモート マシンでもサービスを管理できます。 例:
    sc.exe DNSCacheを停止します- ローカル コンピューター上の DNSCache サービスを停止します。
    sc\192.168.0.1 クエリ DNSCache- IP アドレス 192.168.0.1 のコンピュータ上の DNSCache サービスのステータスをポーリングします。
    sc\COMP DNSCache を開始します COMP コンピューターで DNSCache サービスを開始します。
    次のように入力すると、ユーティリティの操作に関するヘルプが表示されます。
    sc/?

    変数 ERRORLEVEL の値を表示します。

    この単純なバッチ ファイルは、特定のコマンド ラインに ERRORLEVEL 変数の値を表示します。 まず、少なくとも 1 つの入力パラメータが存在するかどうかがチェックされ、何も指定されていない場合は、エラー メッセージが発行されて終了します。 少なくとも 1 つのパラメーターが指定されている場合、入力パラメーターはコマンド ラインとして取得されて実行され、ECHO コマンドを使用して値 ERRORLEVEL が返されます。 ファイルの内容 (echoEL.bat と呼びました):

    @エコーオフ
    if "%1" NEQ "" GOTO PARMOK
    ECHO ERRORLEVEL を定義するにはコマンドラインを設定する必要があります
    出口
    :パーモク
    %1 %2 %3 %4 %5 %6 %7 %8
    エコー %1 %2 %3 %4 %5 %6 %7 %8 エラーレベル=%エラーレベル%

    起動例:
    echoEL.bat ネットシェア
    - NET SHARE コマンドが実行され (共有ネットワーク リソースのリストが表示されます)、コード ERRORLEVEL が発行されます。
    echoEL.bat NET SHARE X"="C:
    - コマンド NET SHARE X:=C: が実行されます (共有ファイルを作成します) ネットワークリソース名前は X、ドライブ C のルート ディレクトリへのパスです:) = 記号は二重引用符で囲まれていることに注意してください。
    上記のオプションにより、正しいコマンド ラインが設定されます。 ただし、間違ったパラメータを NET.EXE または存在しないコマンドに設定しようとすると、ERRORLEVEL の値がわかります。 また、コマンド ラインが実際に実行され、たとえばオプション「echoEL.bat format A:」を使用すると、ドライブ A: のフロッピー ディスクのフォーマットが開始されることに注意してください。

    ユーザーとの対話

    ユーザーと対話するには、次のコマンドを使用できます。
    セット/P< имя переменной >=< текст >
    実行すると画面が表示されます メール < текст >応答テキストが期待されます。 例 - パスワードを要求し、その値を「pset」変数に割り当ててみましょう。

    Set /p pset="パスワードを入力してください - "
    echo パスワードは - %pset%

    この方法の欠点は、ユーザーの応答がない場合にコマンド ファイルの実行を続行できないことです。そのため、多くの場合、代わりに set が使用されます。 サードパーティのプログラム。 それらの中の一つ - CHOICE.COMダウンロード(1.7kb)。
    CHOICE は、ユーザーにテキスト メッセージを提供し、ユーザーが指定された応答オプションの 1 つを選択する (キーボードのキーを押す) のを待ちます。 選択結果に基づいて、ERRORLEVEL 変数が形成されます。その値は次のとおりです。 シリアルナンバー選択。 デフォルトでは、Y または N の 2 つのオプションがあります。答えが Y の場合は ERRORLEVEL=1、N の場合は ERRORLEVEL=2 です。 3 つ以上の選択オプションを使用でき、ユーザーが次の時点でデフォルトの選択を設定することもできます。 一定時間キーを一つも押していません。 コマンドライン形式:

    CHOICE 選択肢] c,nn]
    /C[:]choices - 有効な選択肢を定義します。 指定しない場合 - YN
    /N - 選択オプションを表示しません。
    /S - 小文字と 大文字異なっています。
    /T[:]c,nn - デフォルトの選択は「nn」秒後の「c」です
    text - リクエストとして出力されるテキスト文字列

    CHOICE の使用法を示すバッチ ファイルを作成してみましょう。 「1」、「2」、「3」、「0」のキーを押すと応答します。「0」を押すと完了し、残りを押すとメッセージがユーザーに送信されます。 10秒以内に押すと完了します。

    @エコーオフ
    :選択
    選択 /C:1230 /T:0.10 あなたのオプション
    IF %ERRORLEVEL% EQU 4 終了に進む
    echo あなたの選択=%ERRORLEVEL%
    後藤チョイス
    :出口

    CHOICE を使用すると、ユーザーがロジックを定義できるバッチ ファイルを作成できます。

    バッチファイルの遅延

    かつて DOS では、コマンド ファイルで待機状態を整理するために便利な SLEEP コマンドが使用されていましたが、何らかの理由で標準インストールから移行されました。 ウィンドウセット追加のリソース キットに含まれています。 そこから system32 ディレクトリにコピーし、バッチ ファイルで使用するだけです。

    : SLEEP N - N は遅延する秒数です。

    リソース キットが手元にない場合は、前述の CHOISE コマンドをテキスト出力なしで使用し、nn 秒 (1 ~ 99) で応答を自動生成できます。

    Choice.com /T:y,10 /N - 10 秒間の遅延

    より汎用的な方法は、必要な数のパケットを使用してループバック インターフェイスに ping を送信することに基づいています。 ループバック インターフェイス (ホスト名 - localhost または IP アドレス 127.0.0.1) に対する ping は、実際のデータ送信なしで実行されます。 ほぼ瞬時に送信され、ping の間隔は 1 秒です。 「-n」スイッチを使用して ping の数を指定すると、n 秒の遅延が得られます。

    Ping 127.0.0.1 -n 30 > null - 30 秒の遅延が発生します

    アプリケーションを実行しているコンピュータを検索する

    このスクリプトを実装するには、パッケージのユーティリティを使用します。 PSツール(簡単な説明)。 プログラムを実行しているコンピューターをローカル ネットワークで検索するバッチ ファイルを作成しましょう。その名前 (名前の最初の部分) は起動時にパラメーターとして指定されます (例: game )。 検出された場合、メッセージがコンピュータ ADMINCOMP に送信され、検出されたアプリケーションは強制終了されます。 検索するには、Pslist.exe ユーティリティを使用し、その戻りコードを分析します。 ERRORLEVEL 変数の値が 0 に等しい場合は、ユーティリティが検索条件を満たすプロセスをリモート コンピュータ上で検出したことを意味します。 バッチファイル実行時にパラメータとして検索するプロセス名を設定します。 バッチファイルに名前を付けましょう psl.bat。 パラメータを指定して実行すると次のようになります。
    psl.bat ゲーム
    まず、起動時にコマンドラインでパラメータが指定されているかどうかを確認する必要があり、指定されていない場合は、ユーザーにメッセージを発行して実行を完了します。 パラメーターが指定されている場合は、「PARMOK」ラベルに移動しましょう。
    @エコーオフ
    if "%1" NEQ "" GOTO PARMOK
    ECHO 検索するにはプロセス名を指定する必要があります
    出口
    :パーモク
    ここで、PSlist コマンド ラインのコンピューター IP アドレスが一貫して生成されるようにする必要があります。 これを行う最も簡単な方法は、一時環境変数 (コマンド ファイルの実行中のみ有効) をアドレスの定数コンポーネントの値 (たとえば、192.168.0.) と、下位部分 (たとえば、1 ~ 254 の範囲)。 たとえば、次のアドレス範囲内のコンピュータをスキャンする必要があると仮定します。
    192.168.0.1 - 192.168.0.30:
    IPTMP=192.168.0を設定します。 - 住所の上位部分
    set /A IPLAST=1 - 低部。 /A スイッチは計算された数値式を意味します
    set IPFULL=%IPTMP%%IPLAST% - 値 完全なIPアドレス.
    PSlist のコマンドラインは次のようになります。
    pslist\%IPFULL%%1
    あとは、PSlist を周期的に実行し、値が 30 に達するまで各サイクルでアドレスの下位部分に 1 を加算し、実行後に ERRORLEVEL 値を分析するだけです。 結果を分析するには、次のコマンドで遷移を実行します。
    後藤 REZULT%エラーレベル%
    プロセスが検出されると REZULT0 ラベルに遷移し、REZULT1 に遷移します。
    2013-08-25 14:35:35: 記事: 情報セキュリティ: ソフトウェア。 気に入りましたか?
  • バッチ (コマンド) ファイルで環境変数を使用すると、ディレクトリへの絶対パスの指定を回避できます。 たとえば、システムのドライブ文字が事前にわからない場合は、いつでも変数を使用できます。 %システムドライブ%、OSがインストールされているドライブ文字を返します。 また、変数はコードを最適化するために使用されます。繰り返し使用されるパラメーター (レジストリ キーなど) には、短い変数を割り当てて使用できます。 この記事では、変数を操作するためのさまざまなテクニックと、新しい変数を変更および作成する方法について詳しく説明します。 それでは、すべてについて順番に話しましょう。

    環境変数の分類

    まとめ

    チーム Windows シェル(cmd.exe) は、システムを操作するための非常に強力なツールです。 バッチ ファイルはかなりの量のタスクを自動化できるため、よく使用されます。 自動インストールウィンドウズ。 バッチ ファイルで変数を上手に使用すると、次のことを決定できます。 広い範囲質問。 コマンド シェルでの作業がより効率的になり、同時にバッチ ファイルのコードが簡素化されます。 Web サイトまたはフォーラムのページで変数の使用例を見つけることができます。 この記事で使用されている例はすべて、参加者のスクリプトから引用したものです。参加者に深く感謝します。

    用語

    コマンドシェル- これは別です ソフトウェア、ユーザーとオペレーティング システム間の直接通信を提供します。 テキストベースのコマンド ライン ユーザー インターフェイスは、アプリケーションと 公共事業テキストインターフェイスを使用します。

    cmd.exe- コマンドインタープリタ コマンドシェル Windows OS は、入力されたコマンドをシステムが理解できる形式に変換するために使用されます。

    チームセッション起動によって開始できます cmd.exe、バッチ ファイルを実行することによって。 つまり、現在のコマンド シェルが作成されます。 したがって、このシェルを終了すると (たとえば、バッチ ファイルを終了すると)、コマンド セッションが終了します。

    ユーザーセッション(ユーザーセッション)は、ユーザーがログイン(ログオン)すると開始され、ユーザーがログオフ(ログオフ)すると終了します。