2013-02-28 7 views
7

Piszę skrypt Batch, który będzie działał na katalogu. Chcę móc dodać flagę (taką jak -r lub/r lub coś podobnego), która spowoduje, że skrypt uruchomi drzewo folderów zamiast pojedynczego katalogu. Czy można dodać opcje flagi za pomocą wsadowego?Dodawanie flag do skryptu wsadowego

Dzięki

+1

platformie proszę? – user1428716

+0

[parametry linii poleceń] (http://www.robvanderwoude.com/parameters.php). Czy przeszkadzałeś [Googling this] (http://goo.gl/e6Kc9)? – rojo

+1

możliwy duplikat [Opcjonalny argument parsowania pliku Windows Bat) (http://stackoverflow.com/questions/3973824/windows-bat-file-optional-argument-parsing) –

Odpowiedz

12

Z pewnością jest to możliwe. Parametry wiersza poleceń zapadają się do swojego pliku wsadowego jako% 1,% 2, itd (% 0 jest nazwa pliku wsadowego.)

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

Zastosowanie SHIFT spadnie pierwszy argument i przenieść wszystkie pozostałe o jeden. Możesz użyć tego, aby uzyskać nieco bardziej doświadczonego, jeśli chcesz, aby to/r było gdziekolwiek w linii poleceń. Na przykład:

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

Albo użyć %* (który rozszerza się do całej listy argumentów) w FOR pętli tak:

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

Możesz także przetwarzać argumenty jako '% *' za pomocą pętla 'for'. [Przykład] (http://stackoverflow.com/a/15002975/1683264) – rojo

+0

Dobry punkt @rojo. Zaktualizowałem swoją odpowiedź. –

+0

Dlaczego 'SET ARG =% 1',' IF DEFINED ARG' zamiast 'IF NOT '% 1' == '''? – Sinjai