2013-02-28 14 views
7

Dizinde çalışacak bir Batch komut dosyası yazıyorum. Komut dosyası, tek bir dizin yerine klasör ağacını çalıştıracak bir bayrak ekleyebilmeyi (örneğin, -r veya/r gibi bir şey) ekleyebilmeyi istiyorum. Parti kullanarak bayrak seçenekleri eklemek mümkün mü?Toplu iş komut dosyasına bayrak ekleme

Teşekkürler

+1

platformu lütfen? – user1428716

+0

[komut satırı parametreleri] (http://www.robvanderwoude.com/parameters.php). [Bunu yapmaya çalışıyorum] (http://goo.gl/e6Kc9)? – rojo

+1

[Windows Bat dosyası isteğe bağlı argüman ayrıştırma] 'nın olası bir kopyası (http://stackoverflow.com/questions/3973824/windows-bat-file-optional-argument-parsing) –

cevap

12

Kesinlikle mümkündür. Komut satırı parametreleri vs.% 1,% 2, gibi toplu dosyaya geçirilir (% 0 toplu dosya adıdır.)

IF "%1"=="/r" ECHO You passed the /r flag. 

Kullanım SHIFT ilk argüman bırakın ve diğerlerini taşımak için biri tarafından. Komut satırında herhangi bir yerde/r'ye izin vermek istiyorsanız, bunu biraz meraklısı almak için kullanabilirsiniz. Örneğin:

:processargs 
SET ARG=%1 
IF DEFINED ARG (
    IF "%ARG%"=="/r" ECHO You passed the /r flag. 
    SHIFT 
    GOTO processargs 
) 

Veya kullanmak %* böyle bir FOR döngüsünde (tüm argüman listesine genişleyeceği):

FOR %%A IN (%*) DO (
    IF "%%A"=="/r" ECHO You passed the /r flag. 
) 
+2

Ayrıca argümanları '% *' ile "for" döngüsü. [Örnek] (http://stackoverflow.com/a/15002975/1683264) – rojo

+0

İyi nokta @rojo. Cevabımı güncelledim. –

+0

Neden "SET ARG =% 1", "IF NOT"% 1 'yerine DEFINED ARG' IF? == '' '? – Sinjai