Extracto de lote rar con espacios en los nombres.
-
03-07-2019 - |
Pregunta
Estoy intentando extraer por lotes algunos archivos rar que están en algún zip en algunos directorios. Larga historia corta, este es mi bucle a través de los archivos rar:
for %%r in (*.rar) do (
unrar x %%r
)
El problema es que %% r obtiene el valor incorrecto. Si el nombre de los archivos es " nombre de archivo.rar " entonces %% r obtiene el valor " archivo " - se detiene en el primer espacio en el nombre del archivo.
¿Cómo consigo que este bucle funcione con archivos con espacios en los nombres?
Gracias
Solución
Prueba esto:
for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"
Si lo está utilizando en un archivo por lotes, recuerde que deberá duplicar los signos de porcentaje para escapar de ellos.
Otros consejos
%% r
contendrá el nombre completo del archivo, incluidos los espacios. Es su llamada a unrar
que tiene el problema. Si el nombre del archivo contiene espacios, debe incluirlo entre comillas, de lo contrario, unrar
no podrá ver que los dos parámetros (separados por espacios) archivo
y < code> name.rar son en realidad un único nombre de archivo con un espacio.
Así funcionará lo siguiente:
for %%r in (*.rar) do unrar "%%r"
Además, si tiene curiosidad por saber dónde está el problema, a veces es muy útil simplemente reemplazar la llamada del programa con eco:
for %%r in (*.rar) do @echo %%r
donde verá que %% r incluye los espacios en los nombres de los archivos y no los corta.