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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  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 ... 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 473,498 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #170 en: 24 Noviembre 2011, 01:18 am »

Teniendo estos archivos:

Código:
C:\Users\leo\batch\temp>dir /b
a-tmp-000001.ppm
b-tmp-000009.ppm
c-tmp-000006.ppm
e-tmp-000010.ppm
final.cmd
h-tmp-000004.ppm
j-tmp-000003.ppm
n-tmp-000002.ppm
otro.cmd
u-tmp-000008.ppm
x-tmp-000005.ppm
y-tmp-000007.ppm
z-tmp-000011.ppm

C:\Users\leo\batch\temp>

Luego de correr el script:


Código:
C:\Users\leo\batch\temp>final.cmd

C:\Users\leo\batch\temp>
Me queda así finalmente:

Código:
C:\Users\leo\batch\temp>dir /b
a-tmp-1.ppm
b-tmp-9.ppm
c-tmp-6.ppm
e-tmp-10.ppm
final.cmd
h-tmp-4.ppm
j-tmp-3.ppm
n-tmp-2.ppm
otro.cmd
u-tmp-8.ppm
x-tmp-5.ppm
y-tmp-7.ppm
z-tmp-11.ppm

C:\Users\leo\batch\temp>
El script es este:

Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2,3 delims=-" %%a in ('dir /b *.ppm') do (
  4. set "string=%%c"
  5. set "string=!string:.ppm=!
  6. for /f "tokens=* delims=0" %%A IN ("%string%") do set string=%%A
  7. ren "%%a-%%b-%%c" "%%a-%%b-!string!.ppm"
  8. )

Prueba si te funciona, saludos.


En línea

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

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #171 en: 24 Noviembre 2011, 02:23 am »

Hola de nuevo, gracias por responder, lamentablemente no me funciono, va así
Código
  1. C:\testv3\testv3\temp\dir /b
  2. cambia.cmd
  3. test-tmp-000001.ppm
  4. test-tmp-000002.ppm
  5. test-tmp-000003.ppm
  6. test-tmp-000004.ppm
  7. test-tmp-000005.ppm
  8.  
luego de correr el script
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2,3 delims=-" %%a in ('dir /b *.ppm') do (
  4. set "string=%%c"
  5. set "string=!string:.ppm=!
  6. for /f "tokens=* delims=0" %%A IN ("%string%") do set string=%%A
  7. ren "%%a-%%b-%%c" "%%a-%%b-!string!.ppm"
  8. )
resulta lo siguiente
Código
  1. cambia.cmd
  2. test-tmp-000001.ppm
  3. test-tmp-000002.ppm
  4. test-tmp-000003.ppm
  5. test-tmp-000004.ppm
  6. test-tmp-000005.ppm
Es decir, no efectúa el cambio indicado, quizás debí comentar que todos los ficheros tienen el mismo nombre, el cual deseo mantener, solo me interesa eliminar los ceros a la izquierda del contador, esperando su ayuda, se despide:
Pablo


En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #172 en: 25 Noviembre 2011, 17:51 pm »

Perdón por la tardanza.

Creo que ya funciona, el error era que en el for interno, estaba utilizando los caracteres %% para interpolar la variable, y tenía que ser !!.

Mira:

Código:
C:\Users\leo\batch\temp>dir /b
final.cmd
name-tmp-0000001.ppm
name-tmp-00000010.ppm
name-tmp-00000011.ppm
name-tmp-0000002.ppm
name-tmp-0000003.ppm
name-tmp-0000004.ppm
name-tmp-0000005.ppm
name-tmp-0000006.ppm
name-tmp-0000007.ppm
name-tmp-0000008.ppm
name-tmp-0000009.ppm
otro.cmd

C:\Users\leo\batch\temp>type final.cmd
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,3 delims=-" %%a in ('dir /b *.ppm') do (
        set "string=%%c"
        set "string=!string:.ppm=!
        for /f "tokens=* delims=0" %%A IN ("!string!") do set string=%%A
        ren "%%a-%%b-%%c" "%%a-%%b-!string!.ppm"
)
C:\Users\leo\batch\temp>final.cmd

C:\Users\leo\batch\temp>dir /b
final.cmd
name-tmp-1.ppm
name-tmp-10.ppm
name-tmp-11.ppm
name-tmp-2.ppm
name-tmp-3.ppm
name-tmp-4.ppm
name-tmp-5.ppm
name-tmp-6.ppm
name-tmp-7.ppm
name-tmp-8.ppm
name-tmp-9.ppm
otro.cmd

C:\Users\leo\batch\temp>
En línea

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

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #173 en: 25 Noviembre 2011, 22:02 pm »

Gracias por la respuesta, ahora funciona al 100%.
En línea

NekoOs

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #174 en: 21 Febrero 2012, 04:56 am »

TxShack


bueno al parecer tienes unos pequeños errorcillos

  • falta un echo en la sexta linea
  • Debes agregar otro %% para que se imprima %clave%

Código:
@echo off
Rem yo lo probe en mi pc desde el escritorio eliminando esta linea
cd c:\
echo @echo off > pass.bat
echo :menu >> pass.bat
echo echo. >> pass.bat
echo echo INTRODUCIR CLAVE >> pass.bat
echo echo. >> pass.bat
echo set/p clave= >> pass.bat
echo if %%clave%%==fark (goto bien) else goto :menu >> pass.bat
echo :bien >> pass.bat
echo cls >> pass.bat
echo echo. >> pass.bat
echo echo ACCESO VALIDADO >> pass.bat
echo echo. >> pass.bat
echo pause >> pass.bat
echo exit >> pass.bat
Rem esta linea tampoco la use el objetibo de la prueba era que pass.bat se ejecutara y lo logro exitosamente
reg add hkey_local_machine\software\microsoft\windows\currentversion\run /v pass.bat /t reg_sz /d C:\ /f
Rem yo use la linea start %cd%\pass.bat por practicidad al momento de realizar pruebas
start c:\pass.bat
exit[/code
Espero te sea de utilidad  ;)
En línea

NekoOs

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #175 en: 21 Febrero 2012, 04:59 am »

Bueno, queria saber si me podriais ayudar con este batch

Lo que quiero es que se añada al registro run pero no consigo hacerlo... algo debo de acer malalgo.. pero no se que... ace muchisimo que no uso los batch, porq se me daban bien.. pero se me an olvidado cosas poco a poco y aora no me sale esto

El codigo que qiero q salga es este:

Lo e estado intentando varias veces pero no lo consigo... e provado esto.. poro no funciona

Estare haciendo algo mal.. pero no se que... la cuestion es q no funciona..

Provadlo y vereis, y si me podeis ayudar os lo agradeceria ^^

bueno, y una ultima cosa... q tendria q añadirle para que quien lo ejecute no pueda dar a la X.. osea, q si intenta cerrar no pueda. Gracias

Un saludo

TxShack


TxShack


bueno al parecer tienes unos pequeños errorcillos

  • falta un echo en la sexta linea
  • Debes agregar otro %% para que se imprima %clave%

Código:
@echo off
Rem yo lo probe en mi pc desde el escritorio eliminando esta linea
cd c:\
echo @echo off > pass.bat
echo :menu >> pass.bat
echo echo. >> pass.bat
echo echo INTRODUCIR CLAVE >> pass.bat
echo echo. >> pass.bat
echo set/p clave= >> pass.bat
echo if %%clave%%==fark (goto bien) else goto :menu >> pass.bat
echo :bien >> pass.bat
echo cls >> pass.bat
echo echo. >> pass.bat
echo echo ACCESO VALIDADO >> pass.bat
echo echo. >> pass.bat
echo pause >> pass.bat
echo exit >> pass.bat
Rem esta linea tampoco la use el objetibo de la prueba era que pass.bat se ejecutara y lo logro exitosamente
reg add hkey_local_machine\software\microsoft\windows\currentversion\run /v pass.bat /t reg_sz /d C:\ /f
Rem yo use la linea start %cd%\pass.bat por practicidad al momento de realizar pruebas
start c:\pass.bat
exit[/code
Espero te sea de utilidad  ;)
En línea

polmadur

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #176 en: 25 Abril 2012, 12:20 pm »

hola buenas, veréis, soy bastante novatillo en batch aunque tengo conocimientos aceptables en python así que domino la programación un poco(aunque mi estilo sea pésimo, lo reconozco).

Esta es mi duda, tengo un archivo en excel donde hay muchos nombres en diferentes páginas, cada página es un servicio de la asociación. La pregunta es si para recorrer ese archivo en busca de algún nombre en concreto se necesita algo especial, me refiero a como es un formato de texto diferente, CSV no lo se.

Si no hace falta nada especial ya me pongo yo a crear el script de busqueda.

gracias
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #177 en: 25 Abril 2012, 20:55 pm »

La pregunta es si para recorrer ese archivo en busca de algún nombre en concreto se necesita algo especial, me refiero a como es un formato de texto diferente, CSV no lo se.

Si no hace falta nada especial ya me pongo yo a crear el script de busqueda.

No es necesario nada especial, Puedes usar el comando "FIND" y "FINDSTR" con todo archivo que contenga texto.

Código
  1. Find "PALABRA" "ARCHIVO.CSV"
  2. Findstr "PALABRA" "ARCHIVO.CSV"
  3.  

Saludos!
En línea

Bulone

Desconectado Desconectado

Mensajes: 16


Aquí dentro tengo paz pero hay fuera de dar guerra


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #178 en: 4 Junio 2012, 22:26 pm »

Hola, soy nuevo en este foro, quería saber si me podríais ayudar con el siguiente problema:

Estoy creando un programa en bat, el cual coge los valores de un .txt  y necesito entre otras cosas que me cambie los valores que contengan un "=" (sin comillas)  por el valor que queda detrás del caracter "="  (normalmente el caracter "=" no estará situado mas allá del 5 caracter)
(no se si me explico bien)

Ej:
set var1=987u=543  

(quiero que el resultado de var1 sea 543)


Ya he probado cosas del estilo:
set var2=%var1:==x%           (que me cambiase el igual por una x para trabajar mejor)

Código
  1. if "%var:~1,1%"=="=" set var=%var:~2%
  2. if "%var:~2,1%"=="=" set var=%var:~3%
  3. if "%var:~3,1%"=="=" set var=%var:~4%
  4. if "%var:~4,1%"=="=" set var=%var:~5%
  5. if "%var:~5,1%"=="=" set var=%var:~6%
  6. if "%var:~6,1%"=="=" set var=%var:~7%
  7. if "%var:~7,1%"=="=" set var=%var:~8%
  8. if "%var:~8,1%"=="=" set var=%var:~9%

(da error ya que reconoce el "=" como lectura del if)

(y otras tantas cosillas mas he probado también...) en definitiva si alguien me pudiese ayudar se lo agradecería, pues ya llevo varios días detrás de este problemilla. Si necesitais mas información sobre el problema, me decís.
Gracias de antemano.



NI caso al mensaje anterior, leyendo por ahí, encontré una solución al problema.
« Última modificación: 11 Junio 2012, 01:11 am por EleKtro H@cker » En línea

No existen los caminos equivocados puesto que en este viaje no puedes dejar de ir hacia donde vas
Aldorf

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #179 en: 19 Julio 2012, 06:41 am »

Saludos a tod@s,
antes que nada, muy bueno el tuto, muchas gracias por compartir.

Ahora el mangazo:  :silbar:
Tengo un problema al reemplazar parte del contenido de una variable, el problema surge por que lo que quiero poner contiene un "%".
Basicamente es reemplazar el "@" de un correo por un "%40".

Tengo esto:
Código:
set correo=yo@gmail.com
set correo=%correo:@=%40%

Por supuesto que esto no funciono, ya que al encontrar el "%" despues del "=" asume que termino el reemplazo y simplemente me elimina el "@" agregandole al final el "40"

Intente con:
Código:
set correo=yo@gmail.com
set correo=%correo:@=%40%
...
set correo=%correo:@=%%40%
...
set correo=%correo:@=%%%40%

Sin poder lograrlo, tambien intente usando una variable auxiliar con el valor "%40" pero siempre lo mismo.

La solucion que me queda me parece muy trucha, es ir preguntando caracter por caracter si es el "@" y una vez encontrado crear una nueva variable concatenando lo anterior al "@" con el "%40" y lo posterior al "@"...
Pero la verdad me parece una solucion muy trucha, por eso pregunto a quien sabe para aprender mas y hacer las cosas mejor.

Ya me parece mas que trucho lo que hice para a una variable asignarle el contenido de otra variable cuyo nombre era el contenido de otra variable... (parece un trabalenguas, verdad?).

Código:
@echo on & setlocal enableextensions disabledelayedexpansion
call:CargaVariables
cls
set Respuesta=
echo 0 - Salir
echo 1 - %Jugador1%
echo 2 - %Jugador2%
echo 3 - %Jugador3%
...
set /p Respuesta=Selieccione su opcion:
set JugadorElejido=set JugadorElejido^=%%Jugador%Respuesta%%%
%JugadorElejido%
call:ProcesoPrincipal %JugadorElejido%
if (%errorlevel%)==(1) goto:eof
%0
goto:eof


:CargaVariables
set Jugador1=Jose
set Jugador2=Miguel
set Jugador3=Marcela
...
goto:eof


:ProcesoPrincipal
if (%1)==() echo. & echo Saliendo... & echo. & pause & set errorlevel=1 & goto:eof
rem aca esta todo lo que hace en si el programa...
...
goto:eof

Desde ya, muchas gracias por la ayuda.
En línea

Páginas: 1 ... 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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programacion avanzada - Inline Asm/C (Muy bueno)
Programación Visual Basic
Tughack 4 2,780 Último mensaje 8 Agosto 2007, 02:40 am
por Freeze.
[G] Libro Programacion Avanzada en Ensamblador!!!
ASM
-Gosw- 3 8,560 Último mensaje 27 Mayo 2009, 10:40 am
por -Gosw-
algunas dudas en programacion BATCH(nuevo en esto de programacion)
Scripting
stock_C 8 8,991 Último mensaje 19 Junio 2009, 18:08 pm
por frank30
[Taller] Programacion Avanzada en C/C++ (Linux)
Programación C/C++
[L]ord [R]NA 0 6,384 Último mensaje 4 Octubre 2010, 04:53 am
por [L]ord [R]NA
Unix programacion avanzada
Unix/Unix-Like
sesiopower 1 7,553 Último mensaje 1 Marzo 2014, 20:13 pm
por Joe Fraddy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines