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

#2451
Scripting / Re: Leer xml desde archivo batch
30 Abril 2009, 21:24 PM
Necesitas poner el codigo entero.
#2452
Para mi mejor, que no muestre asteriscos.  ::)
#2453
Aqui un codigo que hace lo mismo, es de Timo Salmi:
@echo off & setlocal enableextensions
:: Build a Visual Basic Script
set vbs_=%temp%\tmp$$$.vbs
set skip=
findstr "'%skip%VBS" "%~f0" > "%vbs_%"
::
:: Prompting without linefeed as in Item #15
echo.|set /p="Password: "
:: Run the script with Microsoft Windows Script Host Version 5.6
for /f "tokens=* delims=" %%a in ('
  cscript //nologo "%vbs_%"') do set MyPass1=%%a
::
echo.
echo.|set /p="Retype  : "
for /f "tokens=* delims=" %%a in ('
  cscript //nologo "%vbs_%"') do set MyPass2=%%a
::
:: Clean up
for %%f in ("%vbs_%") do if exist %%f del %%f
::
:: Demonstrate the result
echo.
if "%MyPass1%"=="%MyPass2%" (
  echo The entered password was %MyPass1%
  ) else (
  echo No match)
endlocal & goto :EOF
'
'The Visual Basic Script
Set WshPass = WScript.CreateObject("ScriptPW.Password") 'VBS
Password=WshPass.GetPassWord() 'VBS
WScript.Echo PassWord 'VBS

Salida:

C:\>code
Password:
Retype  :
The entered password was Leo

C:\>
#2454
Hola, a ver si te sirve esto :
Código (dos) [Seleccionar]
@echo off
:: Leer direccion que se esta usando al momento y guardarla en un .txt:
for /f "tokens=3" %%_ in ('netsh diag show ip ^| find /i "ipaddress"') do (
echo %%_ > "ip.txt"
)
:: RENOVAR LA IP
:: Volver a sacar la ip, y compararla con la del .txt :
for /f "tokens=3" %%_ in ('netsh diag show ip ^| find /i "ipaddress"') do (
set "ip=%%_"
)
for /f "tokens=1" %%_ in (ip.txt) do (
set "ip_txt=%%_"
)
:: Se tienen las dos variables, se comparan :
if "%ip%"=="%ip_txt%" (
echo.Iguales
rem Acciones
) else (
echo.No iguales
rem Acciones
)

-El codigo guarda la direccion IP actual en un archivo de texto llamado "ip.txt".
-Se renueva la IP (Eso lo haces tu).
-Se vuelve a sacar la IP actual, se guarda en una variable, comparar se luego.
-Se coge la direccion IP del archivo de texto, y se guarda en una variable de texto.
-Luego se hace la comparación.

Saludos.
#2455
Código (dos) [Seleccionar]
@echo off
:menu
cls
echo                                              MENU
echo 1.Hora
echo 2.Fecha
echo 3.Crear un directorio
echo 4.Borrar un directorio
echo 5.Salir
set /p opc=Elija una opcion
if not defined opc (goto:menu)
if %opc%==1 goto 1
if %opc%==2 goto 2
if %opc%==3 goto 3
if %opc%==4 goto 4
if %opc%==5 (goto 5) else (goto:menu)
:1
cls
time
cls
goto:menu
:2
cls
time
cls
goto:menu
:3
cls
set /p nombre=Escriba el nombre del directorio a crear
if not defined nombre (goto:3)
MD "%nombre%"
echo Directorio creado
cls
goto:menu
:4
cls
set /p borra=Escriva el derectorio a eliminar
if not defined borra (goto:4)
rd /s /q "%borra%"
echo directorio eliminado
cls
goto:menu
:5
exit


Las etiquetas se ponen asi :
:3
no
3:
RD elimina carpetas, DEL no.

Saludos.
#2456
A ver, teniendo como ejemplo este archivo de texto:
file.txt:

123
234
345
456
567
678
789
890
8BIMPatt
leo
leo
lala
lelo
lala
lulu
juaisjuais
klasjkldjkasd
flkjdfklsdfmn,

Queremos cortar hasta donde se encuentre la palabra "8BIMPatt".
Código (dos) [Seleccionar]
@echo off
:: Leo Gutierrez R.
setlocal enabledelayedexpansion
for /f "tokens=1 delims=:" %%_ in ('type "file.txt" ^| findstr /n "8BIMPatt"') do (set "start=%%_")
if not defined start (
echo Palabra "8BIMPatt" no encontrada.
set /p =Pulse para salir.
exit /b 1
)
set /a "contador=0"
for /f "tokens=*" %%_ in (file.txt) do (
echo %%_ >> "otro.txt"
set /a "contador+=1"
if !contador! equ !start! (exit /b 0)
)
goto:eof

El codigo nos creará un archivo llamado "otro.txt" donde se encontrará la información:
otro.txt:
123
234
345
456
567
678
789
890
8BIMPatt


Saludos.
#2457
Y tu fuera de que no usas el botón "Modificar".

Soy novato en C, por eso lo resolví de esa manera.
#2458
El ejercicio lo resolví en C, de algo te servirá:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
    char buffer[30];
    signed int numero, ndigitos, suma = 0, producto = 1;
    printf("Introduzca numero : ");
    scanf("%i", &numero);
    ndigitos = strlen(itoa(numero, buffer, 10));
    signed int digitos[ndigitos];
    for(signed int i = 1; i <= ndigitos; i++)
    {
        digitos[i] = numero % 10;
        numero /= 10;
    }
    for(signed int i = 1; i <= ndigitos; i++)
    {
        suma += digitos[i];
    }
for(signed int i = 1; i <= ndigitos; i++)
    {
        producto *= digitos[i];
    }
    printf("\n\tCantidad de digitos : %i", ndigitos);
    printf("\n\tSuma : %i", suma);
    printf("\n\tProducto de sus digitos : %i", producto);
    printf("\n\tDigito izquierdo : %i", digitos[sizeof(digitos)/sizeof(int)]);
    printf("\n\tDigito derecho : %i", digitos[1]);
    printf("\n\nNumero inverso : ");
    for(signed int i = ndigitos; i > 0; i--)
    {
        printf("%i", digitos[i]);
    }
    return 0;
}

Puedes sacarle provecho a los for para calcular las sumas y productos.

No te preocupes seguro que aqui te ayudarán bien, solo tienes que poner un poco de tu parte, poniendo lo que llevas de codigo.
#2459
Hola, siguiendo con el descubrimiento que ha hecho Carlos:
CitarLa utilidad de mi descubrimiento es que por ejemplo si antes declaraban:

Código:

for /f "tokens=1-4" %%Y in ("p1 p2 p3 p4") do (
echo %%Y%%Z...
)


y querían mostrar el token 1,2,3,4 solo podíamos mostrar el token 1 y 2, porque luego de %%Y viene %%Z y después ... no sabíamos que letra venía.

Entonces ahora podemos hacer:
Código:

for /f "tokens=1-4" %%Y in ("p1 p2 p3 p4") do (
echo %%Y%%Z%%[%%\
)


He descubierto que tambien podemos usar numeros en la variable del for, de la siguiente manera.

@echo off
for %%^1 in (
hola,
adios,
si,
no,
Ok,
bye
) do (
echo %%^1
)

for /l %%^6 in (1 1 10) do (
echo %%^6
)


for /d /r %%^2 in (*) do (
echo %%^2
)

for /f "tokens=1,2,3" %%^0 in ('ver') do (
echo.%%^0 %%^1 %%^2
)


for %%^1 in ("%~nx0") do (
echo %%~nxt^1
)



for /f "tokens=1" %%^7 in ('ver') do (
echo.%%^7
)
Esto no está documentado, al menos que yo sepa.

Rob Van der Woude :
CitarHi Leonardo,

Amazing! Yet another new feature discovered in CMD, after all these years...
I added your tip on my Clever Tricks page (http://www.robvanderwoude.com/clevertricks.php#FORListNumbers) with a link from the Program Flow section of my Batch Techniques page (http://www.robvanderwoude.com/battech.php#Flow).

Thanks again,

Rob
Citar
Leonardo Gutierrez Ramirez also found a way to use numbers as variables in a FOR loop:

   Hi, I have discovered that we can use numbers in the variable FOR command, like this:

   FOR /L %%ˆ6 IN (1 1 10) DO (
       ECHO %%ˆ6
   )

   FOR /D /R %%ˆ2 IN (*) DO (
       ECHO %%ˆ2
   )

   FOR /F "tokens=1,2,3" %%ˆ0 IN ('VER') DO (
       ECHO.%%ˆ0 %%ˆ1 %%ˆ2
   )

   FOR %%ˆ1 IN ("%~nx0") DO (
       ECHO %%~nxtˆ1
   )

   FOR /F "tokens=1" %%ˆ7 IN ('VER') DO (
       ECHO.%%ˆ7
   )

   FOR %%ˆ1 IN ("%~nx0") DO (
       ECHO %%~nxatdˆ1
   )

Combined with Carlos' extension of the available variables in FOR loops, we can now, in theory at least, nest up to 75 FOR loops!
Not that I would want to maintain such code...

Thanks Leo

http://www.robvanderwoude.com/clevertricks.php#FORListNumbers

http://www.robvanderwoude.com/battech.php#Flow

Saludos.
#2460
Scripting / Re: Descubrimiento en comando for
16 Abril 2009, 03:16 AM
Carlos, acabo de descubrir que tambien se pueden usar numeros en la variable del for:
FOR %variable IN (conjunto) DO comando [parámetros]

Asi :
Código (dos) [Seleccionar]
for /l %%^5 in (1,1,10) do (
echo %%^5
)

1
2
3
4
5
6
7
8
9
10
Press any key...


Código (dos) [Seleccionar]
for %%^1 in ("%~nx0") do (
echo %%~nxt^1
)


16/04/2009 07:12 a.m. code.bat
Press any key...


Código (dos) [Seleccionar]
for /f "tokens=1" %%^7 in ('ver') do (
echo.%%^7
)


C:\>code
Microsoft

C:\>

Código (dos) [Seleccionar]
for /f "tokens=1,2,3" %%^0 in ('ver') do (
echo.%%^0 %%^1 %%^2
)


Saludos.