Windosバッチ(バット)スクリプト-文字列操作



Windos Batch Script String Manipulation



ウィンドウズバッチ処理には非常に強力な文字列処理機能があり、その機能はC言語で設定された文字列関数よりも決して低くはありません。バッチ処理で実装できる文字列処理関数には、文字列コンテンツのインターセプト、文字列固有のフィールドの置換、文字列のマージ、文字列の展開、およびその他の関数が含まれます。これらの機能を以下に1つずつ説明します。 、



1.インターセプト文字列

文字列のインターセプトは、文字列処理関数で最も一般的に使用されるサブ機能の1つであり、文字列の特定の位置で1つ以上の文字をインターセプトすることができます。その基本的な機能を説明するために例を挙げてください。

========================================= @エコーオフ set ifo = abcdefghijklmnopqrstuvwxyz0 12 3456789 元の文字列をエコーし​​ます(2行目は各文字のシリアル番号です): エコー%ifo% エコー1234567890123 45678901234567890123456 エコーは最初の5文字を​​インターセプトします。 エコー%ifo:〜0,5% エコーは最後の5文字を​​インターセプトします。 エコー%ifo:〜-5% エコーは最初から6番目の最後の文字をインターセプトします。 エコー%ifo:〜0、-5% echo 4番目の文字から開始して、5文字をインターセプトします。 エコー%ifo:〜3,5% エコー下から14番目の文字から始めて、5文字をインターセプトします。 エコー%ifo:〜-14,5% 一時停止 ========================================= もちろん、上記の例は文字列処理の基本的な機能を示しているだけであり、文字列処理の使用法は明確ではありません。次の例は時間を扱います。 ========================================= @エコーオフ エコー現在の時刻は次のとおりです。%time%、つまり、%time:〜0.2%ポイント%time:〜3,2%分%time:〜6,2%秒%time:〜9,2%センチ秒 一時停止 =========================================

2.交換用ストリング

文字列を置き換えます。つまり、文字列内の特定の文字または文字列を特定の文字列に置き換えます。その機能を説明する例を挙げてください。



========================================= @エコーオフ aa = greatを設定します 中国 !私はあなたを誇りに思います! 交換前のエコー:%aa% 交換後のエコー:%aa:= 中華人民共和国 エコーaa =%aa% set'aa =%aa:China = People's Republic of China% ' エコーaa =%aa% 一時停止 ========================================= 上記の例には少し説明があります。 2つのechoaa =%aa%を比較すると、変数aaの内容を変更する場合は、変更結果 '%aa:China = People's Republic of China%'を変数aaに割り当てる必要があることがわかります。上記の文字列インターセプトにも同じ特性があります。

3.文字列のマージ

実際、文字列をマージすることは、2つの文字列を組み合わせるだけです。例えば:

@echo off rem merge string variables Set aa=Great China! Set bb=I am proud of you! echo %aa%%bb% echo aa=%aa% echo bb=%bb% set 'aa=%aa%%bb%' echo aa=%aa% rem combines string constants 123 and abc echo 123abc rem merge string constants and variables echo acb%aa% pause同様に、変数aaの内容を変更する場合は、マージ結果 '%aa %% bb%'を変数aaに割り当てる必要があります。

4.拡張文字列

「拡張」という言葉は マイクロソフト 独自の翻訳とは、ファイルパスを表す文字列に対して特別な処理を実行することを意味します。具体的な機能は次のとおりです。

========================================= 〜I-引用符( ')を削除し、%Iを展開します %〜fI-%Iを完全修飾パス名に展開します %〜dI-%Iのみをドライブ文字に展開します %〜pI-%Iのみを1つのパスに展開します %〜nI-%Iのみをファイル名に展開します %〜xI-%Iのみをファイル拡張子に展開します %〜sI-展開されたパスには短い名前のみが含まれます %〜aI-%Iをファイルのファイル属性に拡張します %〜tI-%Iをファイルの日付/時刻に拡張します %〜zI-%Iをファイルのサイズに拡張します %〜$ PATH:I-パス環境変数にリストされているディレクトリを検索し、%Iを最初に見つかった完全修飾名に展開します。環境変数名が定義されていない場合、またはファイルが見つからない場合、このキーの組み合わせは空の文字列に展開されます。修飾子を組み合わせて、複数の結果を得ることができます。 %〜dpI-%Iのみをドライブ文字とパスに展開します %〜nxI-%Iのみをファイル名と拡張子に展開します %〜fsI-%Iを短い名前のフルパス名にのみ展開します %〜dp $ PATH:i-パス環境変数にリストされているディレクトリを検索し、%Iを最初に見つかったドライブ文字とパスに展開します。 %〜ftzaI-出力回路と同様に%IをDIRに拡張します ========================================= 上記の内容はfor /?で引用されていますヘルプ情報。 Iは変数Iの略ですが、すべての変数を展開できるわけではないことに注意してください。 2つの条件があります:1。文字列はファイルパスを表します2.変数は%xで表す必要があり、xはa-z A-Z 0-9の62文字のいずれかです。例えば: ========================================= @エコーオフ エコーが実行されているバッチプロセス: エコーフルパス:%0 引用符をエコー削除します:%〜0 エコーが配置されている地区:%〜d0 エコーが配置されているパス:%〜p0 エコーファイル名:%〜n0 エコー拡張:%〜x0 エコーファイル属性:%〜a0 エコー変更時間:%〜t0 エコーファイルサイズ:%〜z0 一時停止 ========================================= %0はバッチプロセスのパラメータであり、現在実行中のバッチプロセスのフルパスを表します。同様に、%1-%9は、渡された1〜9番目のパラメーターを表します。例は次のとおりです。 ============================================== @エコーオフ aa = C: Windows PPP a.btxを設定します 呼び出し:deal aaa%aa% 'c c'ddd eee 一時停止>ヌル 出口 :対処 エコー%% 0 =%0 エコー%% 1 =%1 エコー%% 2 =%2 エコー%% 3 =%3 エコー%% 4 =%4 エコー%% 5 =%5 ============================================== その中で、変数aaは以前は展開できません。 callコマンドを使用し、パラメーターとしてaaをsub-function:dealに渡すことにより、aa変数は%x形式に準拠する変数%1に変換されるため、文字列を展開できます。 a-z A-Zの形式の%xのxについては、forステートメントを確認できます。 forステートメントの変数は%xで表されるため、直接展開できます。