2013-05-03 10 views

risposta

3

Con il comando SHIFT. Ma ad ogni turno perderai il primo. Questo non cambierà la %* ma sarete in grado di ottenere ogni discussione, ma la prima:

@echo off 
shift 

set "arg_line= " 
:parse_args 
if "%~1" NEQ "" (
arg_line=%argline% "%~1" 
goto :parse_args 
) 

Ora dovrete tutti gli argomenti, ma la prima memorizzato in %arg_line%

0

È necessario utilizzare SHIFT. Sposta la posizione apparente dei parametri, quindi %* otterrà tutti i parametri dalla posizione spostata a. Dovresti ottenere i primi parametri prima di utilizzare SHIFT.

More information su SHIFT.

+3

È sbagliato, 'shift' colpisce solo'% 0,% 1,% 2 ...% 9' ma non '% *' – jeb

6
@ECHO OFF 
SETLOCAL 
SET allargs=%* 
IF NOT DEFINED allargs echo no args provided&GOTO :EOF 
SET arg1=%1 
CALL SET someargs=%%allargs:*%1=%% 
ECHO allargs %allargs% 
ECHO arg1  %arg1% 
ECHO someargs %someargs% 

Questo lascerà SOMEARGS con almeno un separatore che conduce (se impostato)

+0

Bello, ma intendevi 'echo' (in quarta linea)? – user2033427

+0

@ user2033427 sì - corretto. – Magoo

Problemi correlati