バットスクリプトの知識の概要

一般的に使用される基本的なコマンド

1.1 @

その役割はライン自体の後ろにそれを表示しないコマンドウィンドウを実行することです

1.2エコー

オンとオフ:それは2つだけの状態を持っていることを、実際にスイッチコマンドです。そして、そこにエコーであり、2つのコマンドをオフにエコー。エコーエコーコマンドディスプレイの直接実装現在の状態(オフまたはオン)エコー閉じエコーオフ行います

1.3 ::

これは、バッチスクリプト内のコメントのコマンド、およびレム同等のコマンドです。

1.4一時停止

その役割は、プロセスは、現在のプログラムを一時停止できるようにすることで、情報の1行表示されます。続行するには任意のキーを押して..

1.5 :和goto

後藤は,:ジャンプ命令であるラベルです。プログラムは、goto文に実行されると、自動的にジャンプします:実行する部分を定義する
と:

……
goto end
……
:end 

1.6%

パーセント記号は、バッチ機能は51%に減少し、それは、それがなければ、唯一の唯一のバッチパラメータであり、実際には厳格な受注ではありません

1.7の場合

コマンドは、得られた結果のそれぞれに応じて、コマンド表示されているかどうかを決定します

入力判定

以下のような:

if "%1"=="" goto usage 
if not "%1"=="" goto usage

判決があります

以下のような:

if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif 
if not exist C:\Progra~1\Tencent\AD\*.gif exit

決定する結果

以下のような:

masm %1.asm
if errorlevel 1 pause & edit %1.asm
link %1.obj 

“if not errorlevel 1”そして、“if errorlevel 0”効果は同等です

一般的に指令値ERRORLEVELの実行結果は2つだけ、「成功」0は、実際には、エラーレベルの戻り値は0〜255の間とすることができる、と述べて使用される「失敗」を示す返さ

次のようにすべてのパラメータがあるの比較:

EQU-等しい
NEQ-等しくない
LSS未満-
LEQ-に等しいか又はより小さい
GTRより大きい-
GEQより大きいか等しいです-

1.8コール

バッチスクリプトから別のバッチスクリプトを呼び出すためにコマンドを呼び出します

スクリプトの呼び出しが柔軟に使用することができ、リサイクル使用、繰り返し使用

スクリプトは、パラメータが使用して呼び出すことができ
ますパラメータを使用してスクリプトを呼び出します。

start.bat:
……
CALL 10.BAT 0
……

10.bat:
……
ECHO %IPA%.%1 >HFIND.TMP
……
CALL ipc.bat IPCFind.txt

ipc.bat:
for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k 

10.batレーン1はパラメータ0%と交換しました。START.BATでは、ipc.batは、実装の効果は、置換IPCを対応ipc.bat各行の3つの変数を使用することでパラメータipcfind.txt(ファイルは、あなたがパラメータを行うことができます)、続きます。バットで%% I、%% jとkの%%。

1.9検索

これは、ファイル内の特定の文字列を検索するための検索コマンドであります

@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit 

まず、netstatコマンドでは、イベントで氷のデフォルトポート7626があるかどうかをチェックし、内A.TXTに結果を保存します。その後A.TXTの内容を一覧表示するコマンドを入力し、「7626」、検索文字列にリストされている内容は、任意のは、そうでない場合は終了し、氷に促しました。

あなたがA.TXTの内容を一覧表示するタイプのコマンドを使用していませんが、findコマンドの使用は、直接にA.TXTに「7626」を検索した場合は、このA.TXTの絶対パスを与えなければなりません

1.10のために

%%変数名IN(関連文書またはコマンド)のコマンドパラメータを実行ください

パラメータ

/ D / L / R / F 4つのパラメータがあります

私は、次の例の自分の役割を説明します

%%変数名:変数名は大文字であるか、AZ AZを小文字ことができ、彼らは、大文字と小文字が区別され、それぞれが値が彼を与えるFOR'll読みます。

コマンドの形式、それが書きたいと; IN:

(関連文書またはコマンド):FORは、以下の例を参照して、何かを読んで、その後、変数に代入すべき
コマンドのフォーマットを、単に書き込みによると:やります!

コマンド実行:この書き込み時に何をすべきか上の各変数の値。

あなたは、システムがヘルプを提供して表示するには/?CMDのために入力することができます!コントロールを何

/d ディレクトリのみ

for /d %%i in (*) do @echo %%i 

彼はCの実行上のルートディレクトリに保存され、それがディレクトリのCドライブのディレクトリの印刷ですべての名前を入れます

/r 再帰

for /r c: %%i in (*.exe) do @echo %%i 

DドライブにこのBAT保存し、その後、彼はサブディレクトリCのルートディレクトリ、およびすべてのEXEファイルの各ディレクトリが表示されている、cが、私が見would'llところだけです。ここでディレクトリです。

/L 反復数値範囲

ヘルプ形式:用/ L %%変数([スタート]#、ステップ#、エンド#)でコマンドを実行します

for /l %%i in (1,1,5) do @echo %%i 

彼は12345から、このような5桁の数字を印刷します

for /l %%i in (1,1,5) do start cmd

実行がショックを受けていなかった後、どのくらいの5 CMDウィンドウ

/f

含む/ Fは、非常に便利なほとんどのバッチで使用しているためであります

FOR /F ["options"] %%i IN (file) DO command
FOR /F ["options"] %%i IN ("string") DO command
FOR /F ["options"] %%i IN (command) DO command

一つ以上のファイルの代わりにファイル

文字列は、文字列を表し

コマンドは、コマンドを表し、

以下の内容A.TXTファイルの場合:

第1行第1列第1行第2列 第1行第3列
第2行第1列 第2行第2列 第2行第3列
第3行第1列 第3行第2列 第3行第3列

あなたはそれがどのようなコマンド、A.TXTの内容を表示したいですか?コースタイプ、タイプA.TXT

for /f %%i in (a.txt) do echo %%i

A.TXTするための第1の開放、その後組として、それを全てA.TXT内部を読み、素子として、各行にあろうように、パラメータ/ Fが含まれているため、または、そこに発生するように、実行ブラケットを開始コレクション

{ "行1、列1、行1、列2、列3、行1"、第要素//
「行2、列1、行2、列2、3の線2「/ /第二の要素
"行3、列1、行3、列2、行3、列3"} //第三の要素

3つだけの要素を設定し、各要素は、同様に、順次I %%で置き換え、次いで後者DOコマンドを実行します。

特定のプロセス:

%%で使用される"行1、列1、行1、列2、行3の1"私の代わりに行った後行うエコー%% I、表示「行1、列1、行2、列1 1、ライン3 "
行2、列1、行2、列2、行2列3 %% Iの代わりと" "エコー実行%% I、ディスプレイ"行2、列1、行2列2列3、ライン2」、
順番に、最後の場所の各要素まで。

delims

delimsは、セパレータとして何を意味するのかである必要があり、ライン毎に伝えるために使用される、デフォルトの区切りはスペースとタブキーがあります

for /f "delims= " %%i in (a.txt) do echo %%i

結果はそれを示しています。

行1、列1
行1、列2
、行3、列1

なぜこれが起こるです。そこdelimsので、このパラメータを使用すると、=その後、スペースで区切った各要素は、デフォルトでは唯一のセグメンテーション後に取るべき最初の要素があることを意味し、スペースが続きます。
実装プロセスは、以下のとおりです。

「行1、列1」「行1、列2」「ライン1:最初の要素「行1、列1、行1、列2、列3、行1は、」三つの要素に分割されています「最初のデフォルトをとる、すなわち、」列3行1、列1」、及び次いで行うなど、後でコマンドを実行します。

しかし、これは、我々はそれぞれの行の2列目の要素をしたい場合は、まだ限られている、だから何?

トークン

あなたは、各行が1つまたは少数への制御を取るために、delimsによって小さな要素に分割されたときにその役割はあります。

あるいは、上記の例で、次のコマンドを実行します。

for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i

結果:

行1、列2
、行2、列2
、行3、列2

あなたは3番目の列を表示したい場合は、トークン= 3に置き換えられます。

一方、ワイルドカード*トークンをサポートし、範囲を限定します。

トークン= 2-10等:第二及び第三の列を表示するために、複数あった場合、= 2-3トークン= 2,3又はトークンで置き換えられています。

この時点でコマンドは次のとおりです。

for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j

どのように%% jのよりも?

あなたのトークンの背中が2に各行を取るので、これは、2番目の列は私%%に置き換え、3列目は%% jに置き換えています。

そして、それはjは%% kは交換することができ%%、アルファベット順に配置しなければならないので、jは私が帰ってきた
実行結果は次のとおりです。

行1、列2、列3、行1
、行2、列2、列3、行2
、行3、列2、行3、列3

ワイルドカード*のために、それはの要素として、行の残りの部分や、この行のすべてを置くことです。
例えば:

for /f "tokens=* delims= " %%i in (a.txt) do echo %%i

結果の実装:

行1、列1、行1、列2、行1、列3
行2、列1、行2、列2、行2、列3
、行3、列1、行3、列2 3行3列

実際には、単にfor /f %%i in (a.txt) do echo %%i結果は同じです。
別の例:

for /f "tokens=2,* delims= " %%i in (a.txt) do echo %%i %%j

結果の実装:

行1、列2、列3、行1
、行2、列2、列3、行2
、行3、列2、行3、列3
%%と2行目の代わりに、私は、%% jで置き換え残りのすべて

2バットスクリプトの圧縮と解凍

2.1圧縮

WinRAR.exe A -o + -r -s -M1 -df ...... \ BAK \ backup.rar .. \ base_db.sql

Mは、(圧縮後のソースファイルを削除する)移動コマンドを表す
コマンドが圧縮加え表す
自己解凍形式のファイルsの作成を表すコマンドを

実用的なスイッチ:

-rサブフォルダを含む
-aiファイル属性を無視し、
-clファイル名を小文字の
-cuファイル名の大文字
-ed空のフォルダを無視する
-epパス情報を無視
-ep1省略する圧縮形式のルートフォルダが
-ep2(ドライブを除く)最も完全なパス情報が含まれている
-dfアーカイブ後にソースファイルを削除するための手段
-drごみ箱に削除ファイルは
-or自動的に同じ名前のファイルの名前を変更

2.2解凍

WinRAR x 解凍先フォルダパスへのアーカイブパス

解凍予約されたパス

WinRAR e 解凍先フォルダパスへのアーカイブパス

解凍パスを無視

フォルダ内の圧縮されたオリジナルパッケージを解凍する際、ある意味のパスを、無視し、解凍後、唯一のこれ以上のすべてのファイルとフォルダを取得することはできません。

WinRAR.exe e backup.rar

圧縮と解凍過程でWinRAR.exeは、私は完全なパスWinRAR.exeサーバを知らない、完全なパス圧縮ソフトウェアであるべきであり、異なるサーバは、WinRAR.exe全体ロードキングは同じではないかもしれません。エラーパスが、対応するディレクトリは、圧縮、WinRAR.exeにコピーすることができないことを保証するために、エラーWinRAR.exe複製を使用しないであろう。

3知識の概要

3.1コールと開始

異なる呼び出しの範囲

バッチは、主なコールと内部コールに使用されて呼び出す:通話保留、およびいくつかのDOSは、コール・セット・テスト= 2のようなコマンドが、他の実行可能ファイルを呼び出すことができますが、内部の通話を開始することはできませんが、それは基本的な実行することができますすべての外部プログラムは、あなたはまた、「」「%windir%は、」フォルダスタートを開くなど、シェルを実行するネットワークプリンタスタート「」「\ IP \プリンタ」などをインストールすることができます。

呼び出すためのさまざまな方法

別の実行が異なる形でバッチプロセスで行われるときに、バッチプロセスにおいて同一の形で実行され、起動が実行されたときに呼び出しが厳密な意味で、別のコールで呼です、新しいオープンプロセスの実現という、あなたはBパラメータの追加を開始することができますが、結果は全く異なっているが。

我々は、しかし、フォーム後者の2つの処理をコールセットテスト= 2を使用し、これを実行するために試験結果/ Bセット= 2現れるを開始するが、我々が発見した場合、我々が使用しそう場合、出口にexitを2回実行しますそれ以外の場合は、DOSのバッチフォームを終了するために呼び出すことはできませんが、コールするコールを使用した場合の出口がある場合、バッチがで呼ばれるように、呼び出されるバッチもプラス終了後にバッチで最もよく実行するために開始直接、元のバッチプログラムの終了が呼び出され、これは非常に深刻な問題です。代わりに、出口のEOF:それはで呼ばれるようにバッチで後藤を使用することをお勧めします。

異なる結果の呼び出し

パラメータまたは変数バッチを渡すだけでなく、コールコールが呼び出され、また復帰に設定することができ、バッチパラメータまたは変数と呼ばれますが、バッチに渡されただけで起動パラメータまたは変数が呼ばれるようにすることはできませんが、実際には第二の点の延長である、パラメータまたは変数を返します。また、我々はまた、ことに注意しなければなりません:使用呼び出しをバッチがで呼び出されたとき、他のバッチを呼び出すときに、我々はGOTOコマンドを使用している場合、この月のように、ジャンプ元のバッチ別のタグ名を使用することをお勧めしますオリジナルのバッチにジャンプし、すべての文の完全な実装は、バッチと呼ばれて保証することはできません。

スタートのために、プロファイルの二つの言葉:「別のプロセスが値で渡すことはできません」、「伝統的な価値観の同じ一方向のプロセスを、私は彼の息子、息子チュアン非Iを渡します。」
  呼び出しのために、「同じプロセス、変数の相互運用性。」最も重要な機能は、あなたがすることはできません開始、サブバッチ環境変数リターンで、環境変数の父親のバッチを継承し、この割賦でコールタグを呼び出すことができるということです。

3.2errorlevel

エラーレベルは、実行状態に成功したリターン0、それ以外のリターンを表明1

if %errorlevel%==0成功が示されています

if %errorlevel%==1表し、実行に失敗しました

一般的な使用とSQL文の実行後、バットのスクリプトが失敗した表示されませんでした時にはそれが失敗した場合、SQL文を実行し、後に、成功したと間違え、後ろのエラーにつながる、プラスERRORLEVELは判決後、うまく処理することができます

3.3プロンプトユーザ

set /pユーザーに求め
set /a数学的な計算を実行します

プレス後の入力を入力します。ウィンドウには、「待機POPを入力します」促し、その後次のとおりです。このようなセット/ PA = POPのウェイト入力として

@echo off
set /p b=输入一个数字:
echo %b%
set /a a=2*%b%
echo %b%+%b%=%a%
pause>nul

主にSQL文、時々IPを入力するようユーザに要求する、パスワード、ポート番号などでユーザーの入力に使用セット/ pは、実用的な作品に共通しています

おすすめ

転載: www.cnblogs.com/leton/p/11895960.html