Problema no se esperaba XXX en este momento [Batch]

Iniciado por ELVJop, 18 Abril 2012, 15:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Cuando Batch dice "No se esperaba...tal" Es por un error de sintaxis de escritura.

Si quieres ayuda postea tu intento de FOR y te lo corrijo para que veas en que fallas...

Saludos








ELVJop

#11
No estoi en el ordenador en el que se efectuo tal error pero juraria que es asi:

FOR /F "tokens=7* delims= " %%i IN ("wmic logicaldisk where "DeviceID='C:'" get FreeSpace") DO echo %%i de Espacio libre

Como veras no se puede entender nada de lo que he echo lo que yo hago estaria bien  si fuera sobre texto plano. Pero con un comando no tengo ni idea.

PD: Al leer el codigo no te estreses. El comando for se me da fatal y aparte lo estoi intentando entender googleando y sobre todo de esta guia : http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

#12
Cita de: ELVJop en 23 Abril 2012, 20:50 PM
No estoi en el ordenador en el que se efectuo tal error pero juraria que es asi:

FOR /F "tokens=7* delims= " %%i IN ("wmic logicaldisk where "DeviceID='C:'" get FreeSpace") DO echo %%i de Espacio libre


Antes de nada quiero decir que para mostrar esa info no necesitas un FOR:
Código (dos) [Seleccionar]
Echo: Espacio libre: & wmic logicaldisk where "DeviceID='C:'" get FreeSpace | FINDSTR "[0-9]"

Y has elejido un muy mal ejemplo para practicar con el FOR, El wmic a veces resulta dificil de mostrar ya que está en caracteres unicode, Y casi siempre es necesario elegir el formato de listado adecuado que te ayude más a filtrar la info que deseas mostrar (El listado por defecto deja las lineas llenas de de espacios al final de cada linea...), y/o filtrarlo usando find o findstr...

Deberías practicar el FOR /F con comandos fáciles y a la vez muy útiles como DIR, TYPE, etc...

1º - Estás habilitando la expansión sin motivo.

2º - ¿Porque usas 7 tokens? En el output del del comando que dijiste de wmic solo hay 1 palabra...

3º - Estás usando comillas dobles y debes usar comillas simples ' ' a menos que uses "USEBACKQ"

4º - Hay que filtrar el output del wmic un poco...

Código (dos) [Seleccionar]
FOR /F "Tokens=2 delims=," %%X IN ('wmic LogicalDisk Where "DeviceID='C:'" Get Name^,FreeSpace /Format:csv ^| FINDSTR [0-9]') DO (Echo %%X De espacio libre.)

Salu2