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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [45] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 279
441  Programación / Scripting / Re: BATCH encuentra el error en: 21 Julio 2011, 20:18 pm
Para la otra si no colocas el código con la etiqueta de código tu mensaje será eliminado sin advertencia.
442  Programación / Scripting / Re: Script de busqueda en bash en: 21 Julio 2011, 08:43 am
La sintaxis del comando es correcta, ¿por qué dices que no te funciona?
443  Programación / Scripting / Re: [Bash] Problema con array en: 21 Julio 2011, 08:42 am
Comparar nombres respecto a longitud o a lexicograficamente cuál es mayor?
444  Programación / Scripting / Re: Borrar archivo con nombre del directorio. BATCH en: 21 Julio 2011, 08:32 am
Jaja, perdón por el shit, siempre les pongo nombres malos a mis variables cuando programo rápido :s.

Y tranquilo, seguro que tu script también funciona.
445  Programación / Scripting / Re: Acciones sobre archivos de texto. [Batch] en: 21 Julio 2011, 08:29 am
Bueno, a ver si he entendido, tu haces una consulta SQL la cual te devuelve los valores que comienzan con H y eso lo volcas a un archivo familia.txt...

Ahí hay que trabajar el archivo para que cada valor(ejemplo):

HEMILIO            
HRODRIGO
HCARMEN
HLORENA            

lo meta en una variable independiente, bueno, si he entendido bien, podríamos trabajar con un array:

Código:
@echo off
setlocal enabledelayedexpansion
set /a contador=0

rem "familia.txt" es el archivo conteniendo el resultado de la consulta:
rem szfamilyname
rem --------------------
rem HMAR
rem HTERESA
rem HLUZ

rem (3 rows affected)

for /f "tokens=*" %%_ in ('findstr /r ^H.*$ familia.txt') do (
set query[!contador!]=%%_
set /a contador+=1
)
echo No. de valores: !contador!

rem Los valores son guardados en el array "query".
rem Para mostrar los valores del array:
rem Primera posición:
echo !query[0]!
rem Segunda posición:
echo !query[1]!
rem Tercera posición:
echo !query[2]!
rem Y así consecutivamente...
rem Solo estoy mostrando hasta el 3, claro que puede haber muchos más.
pause

He comentado un poco el código para que lo entiendas mejor, sino cualquier duda la aclaramos.

Tomando el archivo familia.txt con:

Código:
C:\Users\leo>type familia.txt
szfamilyname
--------------------
HEMILIO
HRODRIGO
HCARMEN
HLORENA

(4 rows affected)
C:\Users\leo>

El código devuelve:

Código:
C:\Users\leo>code.cmd
No. de valores: 4
HEMILIO
HRODRIGO
HCARMEN

C:\Users\leo>
Lo cual es correcto.

Ahora, si quisieramos mostrar todos los valores:

Código:
@echo off
setlocal enabledelayedexpansion
set /a contador=0

for /f "tokens=*" %%_ in ('findstr /r ^H.*$ familia.txt') do (
set query[!contador!]=%%_
set /a contador+=1
)
echo No. de valores: !contador!

rem Los valores son guardados en el array "query".
rem Para mostrar los valores del array:
rem Primera posición:
echo !query[0]!
rem Segunda posición:
echo !query[1]!
rem Tercera posición:
echo !query[2]!
rem Y así consecutivamente...
echo.
echo Todos los valores son:
set /a contador-=1
for /l %%_ in (0,1,!contador!) do (
echo !query[%%_]!
)
pause

¿Me queda una duda, para qué utilizas Batch?, en el trabajo?, universidad?
446  Programación / Scripting / Re: Borrar archivo con nombre del directorio. BATCH en: 21 Julio 2011, 07:36 am
Aquí está mi solución, recién salida del horno, lo bonito del código es la función "dirname"
que obtiene el directorio en el cual se encuentra un archivo, la función utiliza recursividad y
expresión regular.

Miren:

Citar
C:\Users\leo>dirname c:\Users\leo\HijackThis.exe
[leo\]

C:\Users\leo>dirname "c:\Users\leo\Configuración local"
[leo\]

C:\Users\leo>dirname "c:\Users\leo\Desktop\BeJeweled 2 .lnk"
[Desktop\]

Obtiene el directorio en el cuál está el archivo. Esta función fue necesaria para la comparación entre el nombre de archivo y el directorio en el cual se encuentra el archivo.

Con esto he probado el código:

Citar
C:\Users\leo>cd test

C:\Users\leo\test>tree /f
Listado de rutas de carpetas para el volumen Descargas
El número de serie del volumen es 00000200 466D:2456
C:.
¦   lala.html
¦   log.txt
¦   test.cpp
¦   test.exe
¦   test1.txt
¦
+---algo
¦       .bash_history
¦       10-easy-vim.pdf.zip
¦
+---test1
    ¦   test1.txt
    ¦
    +---algo
            .bash_history
            10-easy-vim.pdf.zip
            algo.bash_history
            algo.zip


C:\Users\leo\test>
test.cpp y test.exe tienen 370 KB y están en el directorio test, por lo cual deben de eliminarse.
En el directorio test1, test1.txt debe ser eliminado porque tiene 6KB y se llama igual que su directorio.
En el directorio algo, algo.bash_history debe ser eliminado porque tiene 170KB y está en el directorio algo.

El script genera un log en el directorio test con la siguiente información:

Citar
No borrar ... lala.html, directorio : C:\Users\leo\test, size : 540KB
Borrar archivo ... test.cpp, directorio : C:\Users\leo\test, size : 370KB
Borrar archivo ... test.exe, directorio : C:\Users\leo\test, size : 370KB
No borrar ... test1.txt, directorio : C:\Users\leo\test, size : 1KB
No borrar ... .bash_history, directorio : C:\Users\leo\test\algo, size : 170KB
Borrar archivo ... test1.txt, directorio : C:\Users\leo\test\test1, size : 6KB
No borrar ... .bash_history, directorio : C:\Users\leo\test\test1\algo, size : 170KB
Borrar archivo ... algo.bash_history, directorio : C:\Users\leo\test\test1\algo, size : 170KB

Código:
@echo off
setlocal enabledelayedexpansion
cd ./test
set dir=%CD%
rem Analizar el directorio actual:
for /f "tokens=*" %%_ in ('dir /b /a-d *.exe') do (
set size=
call:size "%%_"
if !talla! lss 500 (
call:dirname %%~dp_
if "!shit!"=="%%~n_\" (
echo Borrar archivo ... %%_, directorio : !cd!, size : !talla!KB >> "%dir%\log.txt"
) else (
echo No borrar ... %%_, directorio : !cd!, size : !talla!KB >> "%dir%\log.txt"
)
) else (
echo No borrar ... %%_, directorio : !cd!, size : !talla!KB >> "%dir%\log.txt"
)
)
rem Analizar subdirectorios:
for /f "tokens=*" %%_ in ('dir /b /s /ad') do (
pushd "%%_"
for /f "tokens=*" %%f in ('dir /b /a-d *.exe') do (
set size=
call:size "%%f"
if !talla! lss 500 (
call:dirname %%~dpf
if "!shit!"=="%%~nf\" (
echo Borrar archivo ... %%f, directorio : %%_, size : !talla!KB >> "%dir%\log.txt"
) else (
echo No borrar ... %%f, directorio : %%_, size : !talla!KB >> "%dir%\log.txt"
)
)
)
popd
)

goto:eof
:size
set /a talla=%~z1 / 1024 + 1
goto:eof
:dirname
if "%~1"=="" goto:eof
for /f "tokens=1* delims=\" %%a in ("%~1") do (
set shit=%%b
echo %%b | findstr /R "\\.." > nul && call:dirname !shit!
)

Saludos.
447  Programación / Scripting / Re: Acciones sobre archivos de texto. [Batch] en: 20 Julio 2011, 22:01 pm
En un rato checo tu duda.
448  Programación / Programación C/C++ / Re: duda con el brake, continue en: 20 Julio 2011, 08:48 am
brake causa la interrupción inmediata de un for, while, case, do-while, es decir, simplemente sales del ciclo.

continue se utiliza para pasar a la siguiente iteración del ciclo.

break - romper
continue - continuar...
449  Foros Generales / Foro Libre / Re: Fanático loco se tatuó letra de una canción de su cantante en: 20 Julio 2011, 06:36 am
A tí si que te vamos a dar faltas hortográficas...

+=1
450  Programación / Scripting / Re: [Batch] hacer que si hay un proceso en ejecución se cierre el explorer en: 19 Julio 2011, 04:00 am
Esto también debería funcionar:
Código
  1. tasklist | find /i "gta_sa.exe" && (
  2. taskkil -f -im explorer.exe
  3. )
No lo he probado.
Páginas: 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [45] 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ... 279
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines