elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  -> Programación BATCH Avanzada. (nuevo)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 Ir Abajo Respuesta Imprimir
Autor Tema: -> Programación BATCH Avanzada. (nuevo)  (Leído 420,610 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #120 en: 7 Mayo 2010, 23:00 »

Dentro de los ciclos FOR, siempre debes de tratar las variables con los caracteres !!

Prueba así:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo             =========================================
  4. echo             =                                                                                       =
  5. echo             =             Renamer                                                             =
  6. echo             =                                                                                       =
  7. echo             =========================================
  8.  
  9.  
  10.  
  11.  
  12. :data
  13.  
  14.  
  15. set /p Historia=Escriba el numero de historia:
  16.  
  17. set /p Ojo=Escriba el tipo de ojo:
  18.  
  19. echo             =========================================
  20. echo               Los datos son correctos?    
  21. echo               Numero de historia: %Historia%      
  22. echo               Tipo de ojo: %Ojo%      
  23. echo             =========================================
  24.  
  25. set /p respuesta=1 es Si, 2 es NO:
  26.  
  27. if %respuesta% EQU 1 (goto :renombrar) else (goto :data)
  28.  
  29.  
  30.  
  31.  
  32. :renombrar
  33. set  contador=0
  34.  
  35.  
  36. for /F "tokens=1,4*" %%i in ('dir') do (
  37.                         set /a contador=!contador!+1
  38.  
  39. echo  %%j %%k !Historia!_% style="color: #448888;">Ojo%_!contador!_%% style="color: #448888;">i.txt
  40. )
  41.  
  42.  


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
robrey26604

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #121 en: 31 Mayo 2010, 22:16 »

Tengo el siguiente código para encontrar y borrar farchivos que no se pueden borrar porque quedaron enganchados
Código:
Código
  1. @echo off
  2. echo Este programa borra archivos que no se dejan borrar porque
  3. echo quedaron enganchados,por ejemplo videos, etc.
  4. set /p archivo="Nombre del Archivo>>"
  5. rem Roberto Fernández Rey
  6. for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
  7. dir /b %%i:\ > nul 2>&1 && (
  8. for /f "tokens=*" %%_ in ('dir /b /s %%i:%archivo%') do (if exist %%_ (
  9. taskkill /f /im explorer.exe && (del /f /q "%%_") && (start explorer.exe)))))
  10. exit /b 0
  11.  
el código busca el archivo y lo elimina pero sucede que no puedo quitar la flash de F: a no ser que le aplique manualmente taskkill al explorer.exe y despues start una vez mas.

que será?

gracias


« Última modificación: 31 Mayo 2010, 22:59 por Leo Gutiérrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #122 en: 31 Mayo 2010, 23:00 »

¿A qué te refieres con "enganchados"?

¿La flash?

¿Cómo?

Explicate mejor.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
robrey26604

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #123 en: 1 Junio 2010, 14:31 »

Gracias Leo por tu tiempo y ayuda.

Me refiero a enganchado a que cuando traté de liberar la flash para desconectarla de forma segura, me indicó que estaba un proceso en curso en ella y por eso no podia ser liberada y que tenia que ver con el explorer. Pienso que puede ser un problema de tiempo, que al aplicar taskkill y no dar un tiempo para eso puede provocar problemas, mi máquina no es muy rápida que digamos, esa es una idea mia pero no estoy seguro de este razonamiento. Cuando le di taskkill, manualmente y start al explorer (manualmente) el proceso terminó y pude sacar la flash. El video que queria borrar estaba en el disco duro y en la flash.

Gracias.

 



En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #124 en: 11 Junio 2010, 20:58 »

Pueden ser muchas cosas, desde el explorador que esté usando la memoria, o simplemente te encuentres con CD o chdir en la memoria.

Coloca el código.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
FJPPitta

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #125 en: 15 Julio 2010, 18:47 »

Hola que tal,

estaba revisando el post ya que estoy haciendo un batch para comprimir archivos con el 7zip d forma que me comprima cada documento en un archivo .7z separado, el caso es que tengo el problema que el nombre de archivo lo arrastra con la extension, si tengo:

documento.doc

le aplico el batch y queda

documendo.doc.7z

como puedo quitar el .doc del comprimido, para comprimir uso:

Código:
for %%a in (*.wad) do "%MYFILES%\7z.exe" a -t7z "%%a".7z "%%a" -mx9 -bd

vi que en un ejemplo pueden quitar lo ultimos 3 caracteres de una variable pero no me funciona, saben como podria hacerle ya sea en esa linea o despues de la ejecución del comando.

Tambien quisiera saber si es posible agregar un log de tiempo a cada archivo comprimido para que dentro de mi 7z tenga documento.doc y fecha.log, el .log creado al momento de la ejecución del .bat


De antemano gracias
En línea

Saludos
FJPPittta
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #126 en: 15 Julio 2010, 21:20 »

Intenta así:

Código
  1. for %%a in (*.wad) do (
  2. "%MYFILES%\7z.exe" a -t7z "%%~na".7z "%%a" -mx9 -bd
  3. )
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
FJPPitta

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #127 en: 15 Julio 2010, 21:48 »

Muchas gracias Leo Gutierrez funciona a la perfección habia intentado ponerle el ~n pero lo hacia %%a~n por eso no quedaba.

Que buena solución

Saludos y buen día
En línea

Saludos
FJPPittta
FJPPitta

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #128 en: 20 Julio 2010, 23:55 »

Ya entrando en mas detalles tengo una duda que me inquieta, es posible hacer un  barrido de letra por letra del nombre de un fichero algo así como que de un archivo abcd.txt me indique las letras exisentes a b c d y pueda hacer un cambio similar a a=1, b=2 c=3 d=4 y luego renombrar automaticamente a 1234.txt o si el archivo se llama bcda.txt se renombre a 2341.txt

Saludos y gracias por la información del post, ha sido realmente muy valiosa para automatizar algunas de mis tareas diarias.
En línea

Saludos
FJPPittta
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #129 en: 21 Julio 2010, 01:25 »

Ya entrando en mas detalles tengo una duda que me inquieta, es posible hacer un  barrido de letra por letra del nombre de un fichero algo así como que de un archivo abcd.txt me indique las letras exisentes a b c d y pueda hacer un cambio similar a a=1, b=2 c=3 d=4 y luego renombrar automaticamente a 1234.txt o si el archivo se llama bcda.txt se renombre a 2341.txt

Saludos y gracias por la información del post, ha sido realmente muy valiosa para automatizar algunas de mis tareas diarias.

code.bat
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem Checar si el usuario usó bien el .bat
  4. if ["%1"]==[""] (
  5. echo Error con argumentos.
  6. exit /b 1
  7. )
  8. rem Checar si el archivo existe:
  9. if not exist "%1" (exit /b 1)
  10. set "word=%~n1";
  11. set "temp=%word%";
  12. rem Calcular la longitud de cadena y almacenarlo en una variable
  13. set /a contador=0
  14. :loop
  15. if not defined word (goto:end)
  16. set "word=%word:~1%";
  17. set /a contador+=1
  18. goto:loop
  19. :end
  20. set /a contador-=1
  21. set "final=";
  22. for /l %%_ in (0, 1, %contador%) do (
  23. call:alpha !temp:~% style="color: #448888;">%_, 1!
  24. set "final=!final!!alpha!";
  25. )
  26. ren "%1" "%final%.txt"
  27. goto:eof
  28. :alpha
  29. set /a contador=0
  30. for %%_ in (
  31. a b c d e f g h i j k l m n o p q r s t u v w x y z
  32. ) do (
  33. set /a contador+=1
  34. if "%1"=="%%_" (
  35. set "alpha=!contador!";
  36. )
  37. )
  38. goto:eof
  39.  


Código:
C:\>echo.> abcd.txt

C:\>dir /b *.txt
abcd.txt

C:\>code.bat abcd.txt

C:\>dir /b *.txt
1234.txt

C:\>
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines