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
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.
wmic logicaldisk where "DeviceID='C:'" get FreeSpace
PD: El total es en Bytes de cualquier manera en Batch.
Saludos
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.
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) (http://foro.elhacker.net/scripting/batch_ruby_ctool_convertidor_de_unidades_bytes_kb_mb_gb_tb_y_pb-t358002.0.html)
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
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.
Cita de: ELVJop en 18 Abril 2012, 16:54 PM
EL link del programa esta roto.
Resubido: http://www.4shared.com/file/mjPOirX9/CTool.html
PD: Usa el buscador del foro.
http://ss64.com/nt/for_f.html
ahi tienes algunos ejemplos de FOR /F
lo siento pero nunca lo entiendo. Exactamente cuales son sus funciones?
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:
@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:
@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
no hombre el for xD
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.
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
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
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:
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...
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