Domanda

Sto cercando di estrarre in batch alcuni rar che sono in alcuni zip in alcune directory. Per farla breve, questo è il mio ciclo attraverso i file rar:

for %%r in (*.rar) do (

unrar x %%r
)

Il problema è che %% r ottiene il valore sbagliato. Se il nome del file è " nome file.rar " quindi %% r ottiene il valore " file " - si ferma al primo spazio nel nome del file.

Come posso ottenere questo ciclo per lavorare file con spazi nei nomi?

Grazie

È stato utile?

Soluzione

Prova questo:

for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"

Se lo stai usando in un file batch, ricorda che dovrai sfuggire ai segni di percentuale per evitarli.

Altri suggerimenti

%% r conterrà il nome file completo compresi gli spazi. È la tua chiamata a unrar che ha il problema. Se il nome del file contiene spazi, devi racchiuderlo tra virgolette, altrimenti unrar non sarà in grado di vedere che i due parametri (separati da spazio) file e < code> name.rar sono in realtà un singolo nome file con uno spazio.

Quindi funzionerà quanto segue:

for %%r in (*.rar) do unrar "%%r"

Inoltre, se sei curioso di sapere dove si trova il problema, a volte è molto utile sostituire semplicemente la chiamata del programma con echo:

for %%r in (*.rar) do @echo %%r

dove vedrai che %% r include gli spazi nei nomi dei file e non li separa.

Il problema è che 'for' usa lo spazio come delimitato di default. Puoi impostarlo usando delims = xxx. cerca qui per la sintassi. Oppure puoi usare ForFiles .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top