Problema no se esperaba XXX en este momento [Batch]

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

0 Miembros y 3 Visitantes están viendo este tema.

ELVJop

resulta ser que haciendo un codigo que seria:
del /f /q
borrando esas caches que ya hos comente en otro post. bueno la question es que hago esto:
del /f /q XXXXXXXX >nul
Hasta aqui todo bien pero quiero hacer un contador del porcentaje. 10 - 20 -30...
seria algo asi:

cls
echo |-         | 10%
echo.
echo Eliminando archivos temporales.

Al ejecutarlo se me cierra la ventana pero antes de cerrar hay algo escrito asi que lo abro y con Impr pant y lo pego en el paint para ver que hay escrito. Y dice algo tipo: no se esperaba echo en este momento. ¿? Lo peor es que si lo quito al final termna asi:

cls
echo                                 operacion terminada correctamente
echo.
pause
goto :xxxxx

Y termina perfecto osea que no se donde esta el problema.s

PD: Otra cosa no sabra alguien el comando para mostrar el espacio libre? Recuerdo que por un tutorial de XXxxXxxx (hos dare una pista empieza por T y termina por !) Salia ese comando pero no encuentro el post
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

Cita de: ELVJop en 18 Abril 2012, 15:06 PM
echo |-         | 10%

Te doy una pista de porque no funciona :P
Cita de: BatchSet /?

Operadores:
   
    ()                  - agrupar
    ! ~ -               - operadores unarios
    * / %              - operadores aritméticos
    + -                 - operadores aritméticos
    << >>               - desplazamiento lógico
    &                   - bit a bit y

    ^    - bit a bit exclusivo o
    |      - bit a bit
    = *= /= %= += -=   - asignación
    &= ^= |= <<= >>=
    ,                   - separador de expresión




Cita de: ELVJop en 18 Abril 2012, 15:06 PM
no sabra alguien el comando para mostrar el espacio libre?

Puedes hacerlo con wmic, o un for con el comando DIR.
Código (dos) [Seleccionar]
wmic logicaldisk where "DeviceID='C:'" get FreeSpace

PD: El total es en Bytes de cualquier manera en Batch.

Saludos








ELVJop

hay  :-X Se me olvido la regla!!!!
para lo segundo: se puede meter en una variable?
Y para la capacidad total?
(Lo de la variable lo digo porque no me siver tenerlo en bytes si lo pudiera poner en una variable lo podira sumar y restar con Set /a ) Una preguntita aparte: estreso con tantas preguntas? es que googleando nunca lo encuentro.
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

Cita de: ELVJop en 18 Abril 2012, 15:52 PM
Y para la capacidad total?
wmic logicaldisk where "DeviceID='C:'" get size

PD:
Mira los datos q puedes obtener para evitar preguntas acerca de lo mismo xD:
wmic logicaldisk where "DeviceID='C:'" get /format:list




Cita de: ELVJop en 18 Abril 2012, 15:52 PM
no me siver tenerlo en bytes si lo pudiera poner en una variable lo podira sumar y restar con Set /a
1º - Puedes hacer un FOR para obtener y setear la 3ª linea del output del wmic (los bytes).
2º - No puedes hacer la conversión de bytes a mb/gb/tb en Batch, No soporta esa profundidad de bits en la operación. Esto es Batch!
Alternativas: Puedes usar PSinfo o un programita más sencillo que hice para convertir bytes a mb/gb/tb/pb
[Batch] [Ruby] Ctool (Convertidor de unidades Bytes, KB, MB, GB, TB y PB)




Cita de: ELVJop en 18 Abril 2012, 15:52 PM
Una preguntita aparte: estreso con tantas preguntas? es que googleando nunca lo encuentro.
No te preocupes, Si fuesen dudas dificiles (Y muchas cada dia) si q me darías trabajo xD








ELVJop

Lo seinto no se usar el comando for. ademas lo poco que se usarlo es para repetir barias veces una operacion.
EL link del programa esta roto.
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro









ELVJop

lo siento pero nunca lo entiendo. Exactamente cuales son sus funciones?
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

#7
Cita de: ELVJop en 18 Abril 2012, 17:55 PM
Exactamente cuales son sus funciones?

El CTool, o el FOR?

El ctool lo puedes usar para enviarle un parámetro al programa (el parámetro sería los bytes) y recibir el resultado en gb, para poder setearlo.

Y el for sirve para hacer cosas como esta:

Código (dos) [Seleccionar]
@Echo OFF
For /F %%? in ('wmic logicaldisk where "DeviceID='C:'" get size ^| Findstr "[0-9]"') Do (Set "Size_Bytes=%%?")
For /F "Tokens=2 delims==" %%? in ('ctool %Size_Bytes% bytes gb') Do (Set "Size_GB=%%?")
Echo Bytes: %Size_Bytes%
Echo GB   :%Size_GB%
Pause >NUL


output:
CitarBytes: 500106752000
GB   : 465.76 GB


Otro ejemplo más automatizado:

Código (dos) [Seleccionar]
@Echo OFF

For /F "tokens=1,* delims= " %%X  in ('wmic logicaldisk get Caption^,size ^| Find ":"') Do (
For /F "Tokens=2 delims==" %%Z in ('ctool %%Y bytes gb') Do (
Echo Disco: %%X
Echo Bytes: %%Y
Echo GB   :%%Z
Echo+
)
)
Pause >NUL



output:
CitarDisco: C:
Bytes: 500106752000
GB   : 465.76 GB

Disco: F:
Bytes: 2000396742656
GB   : 1863.01 GB








ELVJop

El dia 3 de mayo esta cuenta sera borrada.

ELVJop

Perdon por el doble post pero prefiero hacer 2 post que abrir un hilo nuevo. Aparte de que tengo examenes por eso no pude meterme estos dias. Estaba aprendiendo el comando FOR que tiene infinidad de funciones y logre usarlo para sacar partes de texto y porlas en otro sitio. ¿El problema? No se como aplicarlo ni con variables ni con ese comado. ¿ME ayudas? Porque si le mando a For por ejemplo la palabra 9 y despues poner Do echo %%i --- Espacio libre. ME saltan no se esperaba windir C: y cosas raras.
El dia 3 de mayo esta cuenta sera borrada.