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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Scripting / Re: ayuda crear consola batch sin que se cierre al llegar al ultimo comando en: 21 Mayo 2015, 07:10 am
encontre la forma de usar una consola hecha en batch sin que se nos cierre el archivo con el cual la invocamos  ;-)

lo que debemos de hacer es anteponer el comando cmd /c   antes de llamar la consola

ejemplo la consola se llama esau.cmd  la invocare asi:  
Código:
cmd /c esau [comando][comando]

Código:
cmd /c consola.cmd [comando][comando]

el siguiente archivo bat extraera todos los archivos de una carpeta y subcarpetas y los guardara en una sola carpeta  para eso tendra que llamar a la consola esau.cmd


Código:
@echo off

cmd /c esau extraer C:\micarpeta -/a/- C:\mi nueva carpeta

echo listo se extrayeron los archvivos de la carpeta y subcarpetas
pause
exit


tambien aqui esta otro ejemplo
Código:
@echo off
title archivo bat de prueba
set /p ru= hola escribe la ruta de la carpeta que quieres extraerle los archivos:
cls
set /p des= hora escribe la ruta de destino :

cmd /c esau extraer %ru% -/a/- %des%

echo listo se extrayeron los archvivos de la carpeta y subcarpetas
pause
exit


y esta es la consola que por hora solo le e agregado un comando.
Código:
@Echo OFF & SetLocal EnableDelayedExpansion
title erick esau cmd consola



if "%~1"=="help /?" goto :ayuda
if "%~1"=="help" goto :ayuda
if "%~1"=="help/?" goto :ayuda
if "%~1"=="" goto :ayuda

if "%~1"=="extraer" goto :extraer

goto :ayuda


:: extractor
:extraer
set "todo=%*"
set "buscar=%todo:"=%"

set "num=0"
:menu
set /a "num=%num% + 1"
if "!buscar:~%num%,7!"==" -/a/- " (
    goto :listo
)
goto menu

:listo




set /a "num2=%num% - 8"
set /a "num3=%num% + 7"

set "ruta=!buscar:~8,%num2%!
set "destino=!buscar:~%num3%,9999!





:: Extractor de archivos
@Echo OFF
if not exist "%destino%" md "%destino%"

::saca una lista pasa cada linea de texto por el bucle y comprueba si existe en el destino, si existe lo renombra como nombre copia+fecha+hora+numero variable y luego mueve el nuevo archivo

for /f "tokens=* delims=" %%a in ('dir /a:-d /s /b "%ruta%"') do (if exist "%destino%\%%~nxa" ren "%destino%\%%~nxa" "%%~na Copia %date:/=-%-%time::=-%-%random% %%~xa" && move "%%~a" "%destino%")

::los archivos que tenian el mismo nombre ya se renombraron y se movieron los nuevos archivos que tenian el mismo nombre, ahora se movera el resto
for /f "tokens=* delims=" %%a in ('dir /a:-d /s /b "%ruta%"') do (move "%%~a" "%destino%")

cls
echo listo se extrayeron los archivos
echo de %ruta%
echo a %destino%
exit /b


:::proximamente mas funciones...










:ayuda
cls
echo uso:
echo cmd /c esau [comandos]
echo.
echo cmd /c esau help /?             muestra un mensaje de ayuda
echo.
echo extraer    le indica a la consola que ejecute el comando de extraer
echo -/a/-      lo que esta antes de este comando se toma como objetivo y lo que esta despues como destino
echo.                    
echo ejemplos
echo.
echo el siguiente comando extraera todos los archivos de "micarpeta" y subcarpetas y los movera a (micarpeta2)
echo llamadolo desde otro batch de la siguiente manera como una consola pero anteponemos el comando cmd /c
echo.
echo cmd /c esau extraer micarpeta -/a/- micarpeta2
echo.
echo el comando cmd /c se utiliza antes de invocar a la consola esau ya que en la programacion batch
echo si invocamos a otro bat en modo consola ejecutara las acciones correctamente pero al terminar tambien terminara al batch que lo a llamado.
exit /b



:::podemos enviarle variables a la consola pero la consola no puede estableser variables para el batch desde donde lo llamamos porque la consola se abrira en la misma ventana pero como un proceso independiente.










y para quienes les guste el extractor de archivos y quieren usarlo como archivo batch normal aqui esta
Código:
@echo off
title extractor de archivos de multiples carpetas v1.0
if not "%~1"=="" (
    color 0a
) else (
    echo no es necesario abrir este bat solo arrastra la carpeta y dejala caer sobre el archivo %~nx0 && echo presiona una tecla para salir && pause>nul && exit
)

echo quiere extraer todo de %*
echo presione S para extraer su contenido
choice /c s
if "%errorlevel%"=="1" (goto :empezar)
exit
:empezar
md extraido-temp56644..h-.h5a.b1
set "erickesau=%cd%\extraido-temp56644..h-.h5a.b1"
::saca una lista pasa cada linea de texto por el bucle y comprueba si existe en el destino, si existe lo renombra como nombre copia+fecha+hora+numero variable y luego mueve el nuevo archivo

for /f "tokens=* delims=" %%a in ('dir /a:-d /s /b %*') do (if exist "%erickesau%\%%~nxa" ren "%erickesau%\%%~nxa" "%%~na copia %date:/=-%-%time::=-%-%random% %%~xa" && move "%%~a" "%erickesau%")

::los archivos que tenian el mismo nombre ya se renombraron y se movieron los nuevos archivos que tenian el mismo nombre, ahora se movera el resto
for /f "tokens=* delims=" %%a in ('dir /a:-d /s /b %*') do (move "%%~a" "%erickesau%")


echo Presiona una tecla para salir
pause>nul
exit



:::creado por erick esau para extrer todos los archivos de una carpeta y subcarpetas
:::solo arrastrar la carpeta y dejarla caer sobre este archivo bat no es nesesario que este abierto se abrira al caer la carpeta sobre el.
2  Programación / Scripting / Re: ayuda crear consola batch sin que se cierre al llegar al ultimo comando en: 11 Mayo 2015, 16:54 pm
gracias maestro pondre en practica esas mejoras  ;-)
3  Programación / Scripting / ayuda crear consola batch sin que se cierre al llegar al ultimo comando en: 11 Mayo 2015, 05:50 am
estoy creando una consola la cual al llamarla ejecute comando como cualquier consola

ejemplo la consola se llama esau.cmd y la voy a invocar desde un archivo batch
el problema es que cuando la consola llega al final el archivo batch se cierra tambien y no continua con el siguiente comando.
la unica forma de que funcione es llamando con el comando call pero entonces no funcionaria como consola.


hay alguna forma de hacerla funcionar gracias desde ya  :rolleyes:.




archivo.bat
Código
  1. @echo off
  2. esau.cmd milogo.bmp
  3. echo el batch se cierra antes de llegar aqui.
  4.  





consola
esau.cmd
Código
  1. @echo off
  2. color 0a
  3. if -%1-==-- (goto regular) else (goto noregular)
  4.  
  5.  
  6.  
  7. :noregular
  8. if "%~x1"==".ico" goto ico
  9. if "%~x1"==".bmp" goto bmp
  10.  
  11. echo el formato de la imagen no es aceptable use ico para el icono o bmp para el logo.
  12. echo asegurese de no incluir coma , en el nombre de la imagen puede causar este mensaje.
  13. exit /b
  14.  
  15. :regular
  16. set /p archivo= arrastra el icono o el logo y sueltelo aqui luego presione enter:
  17.  
  18. set "esau=%archivo:"=-%"
  19. if "%esau:~-5%" == ".bmp-" goto bmp
  20. if "%esau:~-4%" == ".bmp" goto bmp
  21. if "%esau:~-5%" == ".ico-" goto ico
  22. if "%esau:~-4%" == ".ico" goto ico
  23.  
  24.  
  25. cls
  26. echo el formato de la imagen no es aceptable use ico para el icono o bmp para el logo
  27. exit /b
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. :ico
  36. echo icono
  37.  
  38.  
  39. goto fin
  40.  
  41. :bmp
  42. echo logo
  43. :fin
  44. :::::al llegar a esta parte se cierra no regresa al batch desde donde lo invoque
  45. :::::si lo llamo con el comando call si funcionara correctamente
  46.  

Mod: tema movido, esto no es una duda general
4  Programación / Scripting / Re: "Se ha alcanzado el nivel maximo de recursividad de "setlocal"" en: 27 Febrero 2015, 08:42 am
Código:
SETLOCAL

Si las extensiones de comando están habilitadas, SETLOCAL cambia así:

Ahora el comando por lotes SETLOCAL acepta argumentos opcionales:
        ENABLEEXTENSIONS / DISABLEEXTENSIONS
            Habilita o deshabilita las extensiones del procesador de comandos
            Estos argumentos tienen prioridad sobre los modificadores CMD E:O
            o /E:OFF. Vea CMD /? para obtener más detalles.
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            Habilita o deshabilita la expansión de variables de entorno
            retardada. Estos argumentos tienen prioridad sobre los
            modificadores CMD /V:ON o /V:OFF. Vea CMD /? para obtener más
            detalles.
Estas modificaciones duran hasta que coincida el comando ENDLOCAL,
independientemente de su configuración anterior para el comando SETLOCAL.

El comando SETLOCAL establecerá el valor de ERRORLEVEL si se diera un
argumento. Será cero si se da uno de los dos argumentos válidos y el otro no.
Puede usar esto en los scripts por lotes para determinar si las extensiones
están disponibles con la siguiente técnica:

    VERIFY OTHER 2>null
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo No puede habilitar las extensiones

Esto funciona porque, en las versiones anteriores de CMD.EXE, SETLOCAL
NO establecía el valor de ERRORLEVEL. El comando VERIFY con un argumento
erróneo inicializa el valor de ERROLEVEL a un valor distinto de cero.


Supongo que por algo relacionado con la memoria.

Se soluciona con un simple y efectivo:

Código:
ENDLOCAL




tengo el mismo error mi codigo es el siguiente



setlocal DisableDelayedExpansion

set BUILDIR=PROYECTO\models\EEMFile
set INTEXTFILE=script-player-delete%num%.txt

set OUTTEXTFILE=temp.txt
set SEARCHTEXT=%cd1%\
set VER=-delete "
set OUTPUTLINE=

for /f "tokens=1,* delims=¶" %%A in ( %BUILDIR%\%INTEXTFILE% ) do (
    SET string=%%A
    setLocal EnableDelayedExpansion
    SET modified=!string:%SEARCHTEXT%=%VER%!
    echo.!modified! >> %BUILDIR%\%OUTTEXTFILE%
    endlocal
 )

del %BUILDIR%\%INTEXTFILE%
rename %BUILDIR%\%OUTTEXTFILE% %INTEXTFILE%




me da el mismo error despues de usarlos en mas de apriximadamente 13 veces seguidas ayuda
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines