2016-04-13 100 views
0

私はいくつかのサンプルコードを見つけましたが、私はこのif条件が何を意味するのかを取得することができません:"!S:〜%I%、1!" == ""はどういう意味ですか?

set /p sourceDB=Enter Source DB: %=%  
set S=%sourceDB% 
set I=0 
set L=-1 
:l ----- Forget about this line 
if "!S:~%I%,1!"=="" goto ld 
if "!S:~%I%,1!"=="/" set K=%I% 
if "!S:~%I%,1!"=="@" set Z=%I% 
if "!S:~%I%,1!"==":" set Y=%I% 
set /a I+=1 
goto l 
+0

var内のvarのように見えます:)私はDBがデータベースを表すと仮定していますか? – Jonas

答えて

1

短い答えは、これはあなたがバッチで部分文字列を取得する方法であるということです。


あなたが部分文字列を抽出するとき、あなたは形式 %string_name:~index_of_first_character_in_substring,length_of_substring%を使用するか、 index_of_first_character_in_substringまたは length_of_substringのいずれかの値が(あなたの例では、インデックスは独自の変数である)別の変数に含まれている場合、あなたは遅れ展開と使用を有効にすることができますこの場合、フォーマット !string_name:~%variable_whose_value_is_the_index_of_first_character_in_substring%,length_of_substring!

は、あなたの主な文字列が%S%という変数にある、あなたは文字%I%から始まる、と1文字をつかんでいます。

無視するように指示した行は、文字列全体をループするために使用されるため、実際には非常に重要です。

行全体が"!S:~%I%,1!"==""で、部分文字列が空であるかどうかを確認するために使用されます。つまり、スクリプトは文字列を繰り返し処理します。部分文字列が/,@、および:の場合も条件があります。それらの部分文字列のインデックスをそれぞれ含むK、Z、およびYである。

関連する問題