Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leogtz

#2481
Código (dos) [Seleccionar]
@echo off
:: Me cambio a la carpeta donde quiero checar si existen o no archivos o carpetas.
cd /d "%homedrive%\vacio"
for /f "tokens=1" %%$ in ('dir /b ^| find /v /c ""') do (
set "valor=%%$"
)
if %valor% equ 0 (
echo El directorio esta vacio
) else (
echo El directorio no esta vacio
)
set /p ,=
exit /b 0


O asi :

C:\vacio>dir /b
lalalala.txt

C:\vacio>dir /b | find /v /c "" | find "0" > nul 2>&1  && echo.Vacio. || echo No.vacio.
No.vacio.

C:\vacio>del lalalala.txt

C:\vacio>dir /b | find /v /c "" | find "0" > nul 2>&1  && echo.Vacio. || echo No.vacio.
Vacio.

C:\vacio>


Saludos.
#2482
Código (dos) [Seleccionar]

@echo off
:code
set /p "base=Numero : "
if not defined base (goto:code)
set /p "potencia=Potencia : "
if not defined potencia (goto:code)
:funcion
set /a resultado=0
if %potencia% equ 0 (
rem Salimos
echo.1
exit /b 1
) else (
set /a "resultado=%base%"
for /l %%i in (2 1 %potencia%) do (
set /a resultado=resultado * %base%
)
)
echo.Resultado : %resultado%
exit /b 0


Salida :
Numero : 2
Potencia : 4
Resultado : 16
Press any key...


Numero : 5
Potencia : 8
Resultado : 390625
Press any key...


Numero : 6
Potencia : 7
Resultado : 279936
Press any key...


Código (dos) [Seleccionar]
@echo off
if ["%1"]==[""] (goto:error)
if ["%1"]==[""] (goto:error)
set /a resultado=0
if %2 equ 0 (
rem Salimos
echo.1
exit /b 1
) else (
set /a "resultado=%1"
for /l %%i in (2 1 %2) do (
set /a resultado=resultado * %1
)
)
echo.Resultado : %resultado%
exit /b 0
:error
echo %~nx0 Base Potencia&echo.
echo.Leo Gutierrez R.
exit /b 1

C:\>code 2 3
Resultado : 8

C:\>codes 8 9
134217728

C:\>codes 5 6
15625

C:\>codes 2 3
8

C:\>codes 2 9
512

C:\>


Saludos, espero que les sirva.
#2483
En Batch Script :
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
if %numero% gtr 0 (
if %numero% lss 100 (
call:view %numero%
goto:eof
) else (
echo Mal.
exit /b 1
)
)
goto:eof
:view
set "numero=%1"
set "numero2=%1"
set /a "contador=0"
:bucle
if not defined numero (goto:end)
set "numero=%numero:~1%"
set /a "contador+=1"
goto:bucle
:end
echo.%numero2% tiene %contador% digitos.
set /a "contador-=1"
echo.Invertido : %numero2:~-1%%numero2:~0,1%
set /p ,=
exit /b 0


Salida :

Numero : 73
73 tiene 2 digitos.
Invertido : 37

#2484
Scripting / Re: Ayuda[VBS]
5 Abril 2009, 18:50 PM
Set correr = CreateObject("wscript.shell")
correr.Run "notepad", vbHide
#2485
Scripting / Re: Filtro Anti- BatchInyection
5 Abril 2009, 05:05 AM
Creo que así ya quedaría bien :
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set "name="
set /p "name=Teclee su nombre : "
if not defined name (goto:code)
for /f "tokens=1* delims==" %%l in ('set name ^| findstr /r /i "^Name="') do (
echo.Has escrito : %%m
set "algo=%%m"
goto :_123456789:
)
:_123456789:
echo Variable asignada %%algo%% : !algo!
goto:code


Saludos.
#2486
Scripting / Re: Filtro Anti- BatchInyection
5 Abril 2009, 04:49 AM
Cita de: 0x0309 en  4 Abril 2009, 22:11 PM
buen trabajo, lo que yo quise decir, es que lo intentarás sin:
!algo!
sino con:
%algo%

¿filtro?


Pues no le veo ningun problema en usar !! en ves de %% ya que no estoy usando ningun comando externo (.exe) a cmd.exe, es totalmente valido.

Saludos.
#2487
Scripting / Re: Filtro Anti- BatchInyection
4 Abril 2009, 20:40 PM
Cita de: 0x0309 en  4 Abril 2009, 19:40 PM

Buen método Leo, yo ya había hecho uno, te desafío a que intentes asignar a una variable el contenido de %%_, si así lo haces, ya no hay filtración.

Código (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
:code
set "name="
set /p "name=Teclee su nombre : "
if not defined name (goto:code)
for /f "tokens=2 delims==" %%_ in ('set name') do (
echo.Has escrito : %%_
set "algo=%%_"
goto :_123456789:
)
:_123456789:
echo Variable asignada %%algo%% : !algo!
goto:code


Salida :
Teclee su nombre : &cmd
Has escrito : &cmd
Variable asignada %algo% : &cmd
Teclee su nombre : &echo on
Has escrito : &echo on
Variable asignada %algo% : &echo on
Teclee su nombre : < > &cmd
Has escrito : < > &cmd
Variable asignada %algo% : < > &cmd
Teclee su nombre : |calc
Has escrito : |calc
Variable asignada %algo% : |calc
Teclee su nombre : |cmd
Has escrito : |cmd
Variable asignada %algo% : |cmd
Teclee su nombre : set|more
Has escrito : set|more
Variable asignada %algo% : set|more
Teclee su nombre : &goto:eof
Has escrito : &goto:eof
Variable asignada %algo% : &goto:eof
Teclee su nombre : &goto:eof^
Has escrito : &goto:eof^
Variable asignada %algo% : &goto:eof^
Teclee su nombre : %homepath%
Has escrito : %homepath%
Variable asignada %algo% : %homepath%
Teclee su nombre : ^CTeclee su nombre :
Teclee su nombre : ^C¿Desea terminar el trabajo por lotes (S/N)?

#2488
Pedir un numero al usuario y sumar sus digitos :
Numero : 36574
Digitos : 5
Suma de todos los digitos : 25
Press any key...

Código (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
:code
:: Creacion de variables :
set /p "numero=Numero : "      // Esta variable ira disminuyendo
if not defined numero (goto:code)
set /a "contador=0"
set "numero2=%numero%"
set /a suma=0
:bucle
if not defined numero (goto:end)
set "numero=%numero:~1%"
set /a "contador+=1"
goto:bucle
:end
echo.Digitos : %contador%
set /a contador-=1
for /l %%_ in (0 1 %contador%) do (
set /a suma+=!numero2:~%%_,1!
)
echo Suma de todos los digitos : %suma%
goto:eof
#2489
Scripting / Filtro Anti- BatchInyection
4 Abril 2009, 09:54 AM
Código (dos) [Seleccionar]
@echo off
:code
set "name="
set /p "name=Teclee su nombre : "
if not defined name (goto:code)
for /f "tokens=2 delims==" %%_ in ('set name') do (
echo.Has escrito : %%_
)
goto:code


La utilidad de esto es que podemos mostrar la informacion introducida por el usuario, sin temer por una inyeccion batch.

Funcionamiento :
Teclee su nombre : &cmd
Has escrito : &cmd
Teclee su nombre : &echo on
Has escrito : &echo on
Teclee su nombre : >
Has escrito : >
Teclee su nombre : <
Has escrito : <
Teclee su nombre : |
Has escrito : |
Teclee su nombre : * ? & < ^&cmd^
Has escrito : * ? & < ^&cmd^
Teclee su nombre : %homepath%
Has escrito : %homepath%
Teclee su nombre : set|more
Has escrito : set|more
Teclee su nombre : &echo on
Has escrito : &echo on
Teclee su nombre : &goto:Eof
Has escrito : &goto:Eof
Teclee su nombre : &goto:Eof^
Has escrito : &goto:Eof^
Teclee su nombre : |calc.exe
Has escrito : |calc.exe
Teclee su nombre :


PD : Al final del post esta la versión final.

Saludos.
#2490
Scripting / Re: [BATCH] Bug comando for (eol)
1 Abril 2009, 17:25 PM
Una pena, yo pensé que la solución era eol=" cuando me avisaste  :-\

Tendremos que utilizar un caracter poco comun o no imprimible  :-\

Saludos.