2016-04-13 18 views
0

Bazı örnek kodlar buldum ama bu if durum ne anlama geldiğini alamıyor:"! S: ~% I%, 1!" == "" ne demektir?

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

Bir var içinde bir var gibi görünüyor :) DB veritabanı için duruyor? – Jonas

cevap

1

Kısa cevap bu toplu alt dizeleri almak nasıl olduğudur.


Alt dizgeyi çıkardığınızda, %string_name:~index_of_first_character_in_substring,length_of_substring% biçimini kullanırsınız veya index_of_first_character_in_substring veya length_of_substring öğelerinin değeri ayrı bir değişkendeyse (örneğin, dizinin kendi değişkeni), gecikmeli genişletmeyi etkinleştirebilir ve kullanabilirsiniz. Bu durumda biçimi !string_name:~%variable_whose_value_is_the_index_of_first_character_in_substring%,length_of_substring!

, ana dize %S% adında bir değişkende, sen karakteri %I% başlayan ve 1 karakterini kapma vardır.

Görmezden gelmemizi istediğimiz satır, aslında tüm dizgi boyunca kullanıldıkça oldukça önemlidir.

"!S:~%I%,1!"=="" hattının tamamı, alt dizgenin boş olup olmadığını kontrol etmek için kullanılır - yani, komut dizisi boyunca yineleme işlemi biter. Alt dizgenin /, @ ve :; Bu alt dizelerin indekslerini içeren sırasıyla K, Z ve Y ile.

İlgili konular