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

#2461
Excelente Smart, veo que te tomaste en serio mi consejo, gracias por hacerlo.

Saludos.  :)
#2462
Scripting / Re: Sucesión Fibonacci [Batch]
14 Abril 2009, 19:39 PM
Simplemente excelente, 0x0309.

Saludos.
#2463
De nada.
#2464
Cita de: :: SmartGenius :: en 14 Abril 2009, 05:20 AM
Podrias implementarlo completo ?.... :rolleyes:
Tal ves si, pero por ahora estoy ocupado con algunos problemas de la USACO.

Saludos.
#2465
Scripting / Algoritmo numeros primos [Batch]
14 Abril 2009, 04:56 AM
Código (dos) [Seleccionar]
@echo off
:: Algoritmo de numeros primos, Leo Gutierrez R.
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
set /a "contador=1"
set /a "divisores=0"
set /a "numero_=numero+1"
set /a "suma=0"
:bucle
if %contador% equ %numero_% (goto:end)
set /a "operacion=%numero% %% %contador%"
if %operacion% equ 0 (
set /a "divisores+=1"
set /a "suma+=%contador%"
)
set /a "contador+=1"
goto:bucle
:end
set /a "_=%numero%+1"
if %suma% equ %_% (echo.Es primo) else (echo.No es primo)
goto:eof


Salida:

C:\>code
Numero : 2
Es primo

C:\>code
Numero : 4
No es primo

C:\>code
Numero : 19
Es primo

C:\>code
Numero : 23
Es primo

C:\>code
Numero : 3
Es primo

C:\>code
Numero : 5
Es primo

C:\>
#2466
Ejemplo practico :
En las siguientes subcarpetas quiero comprobar que exista el archivo "file.txt" y asi copiarlo a la ruta C:\
pero se nos presenta un problema, que los archivos que si encuentre serán copiados con el nombre "c:\file.txt"
por lo que podrían ser reescritos, asi que nos ayudaremos de la variable RANDOM, para generar un numero aleatorio.

C:\Archivos>dir /b /s /ad
C:\Archivos\docs
C:\Archivos\docs\docs
C:\Archivos\docs\docs\docs

C:\Archivos>


Código (dos) [Seleccionar]
@echo off
:: Nos cambiamos a la ruta donde trabajaremos con los archivos.
cd /d "%homedrive%\archivos"
for /d /r %%_ in (*) do (
if exist "%%_\file.txt" (
call :copia "%%_\file.txt"
)
)
goto:eof
:copia
copy /y %1 "%homedrive%\file-%random:~0,2%.txt"
goto:eof


Si algunos archivos son encontrados te debe de dar en pantalla algo como :
        1 archivos copiados.
        1 archivos copiados.
        1 archivos copiados.
Press any key...

Ahora, checamos que los archivos hayan sido copiados :

C:\>dir /b file*
file-15.txt
file-46.txt
file-49.txt

C:\>


Saludos.
#2467
Scripting / Re: Algoritmo "Numeros perfectos"
13 Abril 2009, 20:58 PM
Si, gracias por la idea, SMART.
#2468
Scripting / Re: Ayuda con BAT
13 Abril 2009, 20:23 PM
En el caso de Windows XP, hay alguna smaneras de sacar que sistema es :

C:\>systeminfo | findstr /r "XP"
Nombre del sistema operativo:              Microsoft Windows XP Professional

C:\>

ó:

C:\>wmic os get name
Name
Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1


C:\>

Ahora, esto lo pudieras unir con el codigo que te puso Novlucker:

@echo off
rem Universal Batch Operating System Detector
rem Based on work of Timo Salmi found in http://www.netikka.net/tsneti/info/tscmd004.htm
rem Writted by 0x0309
rem e-mail: 0x0309@-gmail.com (without dash)
rem version 11-3-2009 v1.1
rem Tested succesfully in:
rem  MS-DOS 5.0
rem  MS-DOS 6.0
rem  MS-DOS 6.21
rem  MS-DOS 6.22
rem  MS-DOS 7.10
rem  Windows 95 b
rem  Windows NT 4.0 Workstation
rem  Windows 98 SE
rem  Windows 2000 Server
rem  Windows XP 32 bit
rem  Windows XP 64 bit (2003 version)
rem  Windows Vista
rem  Windows 7

set isnt=false
echo.>nul & set isnt=true
if true==%isnt% goto _nt

:_dos9x
set _os_=UNKNOW
echo Test|find "Fail">nul
if errorlevel 0 if not errorlevel 1 set _os_=MSDOS5-621
if not %_os_%==UNKNOW goto _resume
ver | find.exe /i "MS-DOS" >nul
if errorlevel 0 if not errorlevel 1 set _os_=MSDOS622-710
ver | find.exe /i "Windows 95" >nul
if errorlevel 0 if not errorlevel 1 set _os_=95
ver | find.exe /i "Windows 98" >nul
if errorlevel 0 if not errorlevel 1 set _os_=98
ver | find.exe /i "Windows Millennium" >nul
if errorlevel 0 if not errorlevel 1 set _os_=ME
goto _resume

:_nt
net.exe config workstation <nul 1>&0 2>&1
if not errorlevel 0 goto _vermode
if errorlevel 1 goto _vermode
goto _nt_
:_vermode
for /f "tokens=* eol=" %%a in ('ver') do (set _os_=%%a)
goto _eval_
:_nt_
for /f "skip=4 tokens=* eol=" %%a in ('net.exe config workstation') do (
echo.%%a | find.exe /i "Windows" >nul
if errorlevel 0 if not errorlevel 1 set "_line=%%a"&goto _n_t_
)
:_n_t_
set _arg=%_line:"=%&set /a _tk=1
call :_cut %_arg%
for /f "tokens=%_tk%,* eol=" %%a in ("%_line%") do (set _os_=%%a %%b)
set "_arg="&set "_tk="&set "_line="
:_eval_
find.exe 1>nul 2>&1
if errorlevel 9009 goto _unknow
set _os_ | find.exe /i " NT"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=NT&goto _resume
set _os_ | find.exe /i " 2000"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2000&goto _resume
set _os_ | find.exe /i " 2002"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " XP"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " 5.1"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " 5.2"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP64-2003&goto _resume
set _os_ | find.exe /i " 2003"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2003&goto _resume
set _os_ | find.exe /i " 2008"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2008&goto _resume
set _os_ | find.exe /i " 6.0"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2008-VISTA&goto _resume
set _os_ | find.exe /i " Vista"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=VISTA&goto _resume
set _os_ | find.exe /i " 6.1"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=SEVEN&goto _resume
set _os_ | find.exe /i " 7"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=SEVEN&goto _resume
:_unknow
set _os_=UNKNOW
goto _resume

:_cut
set _arg=%1&shift
if /i not [%_arg%]==[Windows] (set /a _tk=%_tk%+1&goto:_cut)
goto :eof

:_resume
echo.System: %_os_%
for /f "tokens=1 delims=|" %%_ in ('wmic os get name ^| findstr /r /v "^Name"') do (
echo %%_
)
pause

Salida :
System: XP
^Z
Microsoft Windows XP Professional
Presione una tecla para continuar . . .


Windows 2000 no lo he usado :(

Saludos.
#2469

De Wikipedia, la enciclopedia libre
Un número perfecto es un número natural que es igual a la suma de sus divisores propios positivos, sin incluirse él mismo. Dicho de otra forma, un número perfecto es aquel que es amigo de sí mismo.

Así, 6 es un número perfecto, porque sus divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3. Los siguientes números perfectos son 28, 496 y 8128.


Código (dos) [Seleccionar]
@echo off
:: Numeros perfectos, Leo Gutierrez R.
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
set /a "i=1"
set /a "suma=0"
set /a "operacion=0"
:bucle
if %i% equ %numero% (goto:end)
set /a "operacion=%numero% %% %i%"
if %operacion% equ 0 (set /a "suma+=%i%")
set /a "i+=1"
goto:bucle
:end
if %suma% equ %numero% (
echo El numero es perfecto.
) else (
echo El numero no es perfecto.
)
goto:eof

Salida:


C:\>code
Numero : 4
El numero no es perfecto.

C:\>code
Numero : 6
El numero es perfecto.

C:\>code
Numero : 20
El numero no es perfecto.

C:\>code
Numero : 28
El numero es perfecto.

C:\>code
Numero : 2000
El numero no es perfecto.

C:\>code
Numero : 496
El numero es perfecto.

C:\>496
"496" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

C:\>

#2470
Pedir una cadena al usuario, y de cada caracter de la cadena indicar que posición ocupa en el abecedario :

Cadena : Leonardo
L = 12
e = 5
o = 15
n = 14
a = 1
r = 18
d = 4
o = 15
Press any key...

Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "abecedario=abcdefghijklmnopqrtsuvwxyz"
set /a "longitud=0"
set "cadena2=%cadena%"
set /a "contador=1"
:bucle
if not defined cadena (goto:next)
set "cadena=%cadena:~1%"
set /a "longitud+=1"
goto:bucle
:next
set /a "longitud-=1"
for /l %%$ in (0,1,%longitud%) do (
call :etiqueta !cadena2:~%%$,1!
)
goto:eof
:etiqueta
set /a "contador=1"
set "caracter=%1"
for /l %%_ in (0,1,25) do (
if /i ["!abecedario:~%%_,1!"]==["%caracter%"] (call:view !caracter! !contador!)
set /a contador+=1
)
goto:eof
:view
echo %1 = %2
goto:eof