|
171
|
Programación / Scripting / Re: duda, elevar una base en su exponente (batch)
|
en: 2 Julio 2008, 05:13 am
|
En realidad no sirve para casi nada ninguno de los dos codes. Hice una prueba: Puse en la consola: Y dice: Número no válido. Los números están limitados a 32 bits de presición. Entonces con números grandes, se pierde presición, por eso si colocas 10 elevado a 10, en vez de devolverte 10000000000 te devolverá 1410065408, 10 elevado a 9 lo devuelve bien. Se pierde presición al convertir a binario los números grandes, entonces el procesador multiplica por otros números, habría que hacerlo con notación científica. Ejemplo: con 32 bits el número máximo en decimal es 2147483647 que en binario es 1111111111111111111111111111111 Si a ese número le sumas 1 te queda en decimal 2147483648 que en binario es 33 bits 10000000000000000000000000000000. Acabo de encontrar un libro muy bueno llamado: "Microsoft Windows Command-Line Administrator's Pocket Consultant" dónde en el capítulo 3 dice bajo el tema Using Mathematical Expressions: Math operations are performed using set with the /A (arithmetic) parameter, such as
set /a theTotal=18+2 set /a theTotal=18*2 set /a theTotal=18/2
All mathematical expressions are evaluated using 32-bit signed integer arithmetic.
This allows for values –2 [elevado] 32 to 2 [elevado] 32–1. If you exceed this range, you’ll get an arithmetic error (code –2) instead of the intended value.
Recomiendo el libro.
|
|
|
175
|
Programación / Scripting / Re: Librería de funciones y scripts BATCH Actualizado 26/05/07
|
en: 1 Julio 2008, 21:32 pm
|
:: DETECTOR OF REMOVABLE DEVICES [V5.0c Final] author Carlitos.dll :: carlitosdll.blogspot.com :: Tested in Windows 2000 and XP. Doesn't works in Windows 98 and Me.
@ECHO OFF IF NOT "%OS%"=="Windows_NT" GOTO Other
ECHO Mounted removable devices detected ECHO.----------------------------------
VER | FIND "NT" >NUL && GOTO NT2000 VER | FIND "2000" >NUL && GOTO NT2000
:XPVISTASEVEN FOR /F "tokens=3 delims=\:" %%A IN ('REG Query HKLM\SYSTEM\MountedDevices ^| FIND "530054004F00520041"') DO ( DIR /A %%A:\ >NUL 2>&1 && ECHO.%%A: ) PAUSE GOTO:EOF
:NT2000 START /WAIT REGEDIT /E "%Temp%\devices.dat" "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices" FOR /F "tokens=3 delims=\:" %%A IN ('TYPE "%Temp%\devices.dat" ^| FINDSTR /R /B /I /C:"\"\\\\DosDevices\\\\[A-Z]:\"=hex:.*,53,00,54,00,4f,00,52,00,41"') DO ( DIR /A %%A:\ >NUL 2>&1 && ECHO.%%A: ) DEL /F /Q "%Temp%\devices.dat" >NUL 2>&1 PAUSE GOTO:EOF
:Other ECHO Current batch is not supported in this Operating System version.
|
|
|
176
|
Programación / Scripting / Re: Ocultar ventana de apagado
|
en: 1 Julio 2008, 20:32 pm
|
He llegado a la conclusión que lo mejor es desactivar windows scripting host y cmd y trabajar con cuenta limitada (Hay que sacar una lección de todo esto, ¿o no?) secure.reg REGEDIT4 //CarlitoS.dll
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System] "DisableCMD"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings] "Enabled"="0" "Remote"="0"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] "DisallowRun"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun] "999"="regedit.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableRegistryTools"=dword:00000001
|
|
|
179
|
Programación / Scripting / Re: Detector unidades Pendrive 0.9
|
en: 1 Julio 2008, 18:04 pm
|
Si pudieses escribir lo mismo Sirdarckcat, en menos líneas, igual sería bueno, así todos aprendemos. Leyendo código, aprendes a escribir código.
Es que el algoritmo que hice es largo, se me ocurrió, investigando el registro. Pero si hay alguna llamada al sistema que se pueda hacer, es decir la misma llamada que hace el vbs de novlucker, descubrirla, un rundll32 y algo, sería bueno. Aunque el algoritmo, no es tan largo, de hecho leo el archivo una sola vez, si te fijas, hay un for que tiene un skip.
Lo otro, a principio del archivo, lo copio a otro con el comando type, para generar un archivo en codificación Windows 1252: Western European, porque el archivo que genera el comando reg.exe lo exporta en formato "Unicode, UTF-16 little endian", y el comando findstr no lee esa codificación. Nota la codificación la averigué con EditPad Lite, y lo de la codificación, se me ocurrió, por descarte.
Suena interesante eso del comando debug.
|
|
|
|
|
|
|