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

#2371
Para descromprimir un .zip vas a necesitar usar la línea de comandos del Winrar o del Winzip.
#2372
Vas bien, para copiar has esto:
Código (dos) [Seleccionar]
for /f "tokens=1" %%_ in (ip.txt) do (
mkdir "\\%%_\Config\tmp"
copy /y "ruta_de_mi_archivo.ext" "\\%%_\Config\tmp"
)
#2373
El 2 en Perl:
Código (perl) [Seleccionar]
#!/usr/bin/perl
use strict;
use warnings;
print "Numero : ";
my $numero = <stdin>;
my $factorial = 1;
for(my $i = 1; $i <= $numero; $i++)
{
$factorial *= $i;
}
print $factorial;
exit;
#2374
De nada.
#2375
Bug en comando FOR, parametro /f, opcion "USEBACKQ"

Este bug esta relacionado con el trato de cadenas.

La documentación sobre dicha opción dice:
        usebackq        - especifica que la nueva semántica está vigente,
                          donde una cadena entre comillas inversas se ejecuta
                          como un comando y una cadena con comillas simples
                          es un comando de cadena literal y permite el uso de
                          comillas dobles para entrecomillar los nombres de
                          archivo en un grupo de nombres de archivos.

Es decir, cambia la semantica:
'' : Comandos
"" : Cadenas
No especificar comillas dobles o simples : Archivo.

Nos dice que para procesar cadenas, debemos usar comillas simples:

Código (dos) [Seleccionar]
@echo off
for /f "tokens=1 usebackq" %%_ in ('Leonardo') do (
echo %%_
)

Salida:
Leonardo


Como pueden ver, usamos comillas simples para tratar cadenas.

Sin la opción "usebackq" sería asi:
Código (dos) [Seleccionar]
@echo off
for /f "tokens=1" %%_ in ("Leonardo") do (
echo %%_
)

Salida:
Leonardo


Ahora, iré directo al problema que afecta a las opciones "useback" y "usebackq":

Esto produce un error:
Código (dos) [Seleccionar]
@echo off
for /f "tokens=1 usebackq" %%_ in ('1 2 3 4 5 6 7 8 10 11 12') do (
echo %%_
)

Salida:

C:\>code.bat
1
El sistema no puede encontrar el archivo Ɛ§㏀§럀§풘§>♂.

C:\>

Como ven, provoca un error, ya que busca un archivo, pero es claro que no estoy trabajando con archivos, sino con cadenas.

Estos también provocan error:

Código (dos) [Seleccionar]
@echo off
for /f "tokens=1 useback delims=" %%_ in ('p1 p2 p3 p4 p5 p6 p7 p8 p9') do (
echo %%_
)

Salida:

p1 p2 p3 p4 p5 p6 p7 p8 p9
El sistema no puede encontrar el archivo ?.


Código (dos) [Seleccionar]
@echo off
for /f "tokens=1-20 useback delims=_" %%a in ('p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14') do (
echo %%a   
)

Salida:
p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14
☼?♀\.stema no puede encontrar el archivo ?¶


En fin, esto esta probado en un Windows XP Professional Service Pack 3

Si me pudieran hacer el favor de probar si en otros sistemas falla, sino les da error, solo alteren la cantidad de tokens en el conjunto, asi:

Código (dos) [Seleccionar]
@echo off
for /f "tokens=1-20 usebackq" %%a in ('1 2 3 4 5 6 7 8 9 11 12 13 14 16 especificar ms tokens en caso de no ver error') do (
echo %%a   
)


Bueno, saludos.
#2376
Código (dos) [Seleccionar]
@echo off
:code
set /p "_palabra=Palabra : "
if not defined _palabra (goto:code)
set "palabra=%_palabra%"
set /a "contador-=1"
:strlen
set "_palabra=%_palabra:~1%"
set /a contador+=1
if defined _palabra (goto:strlen)
for /l %%_ in (0,1,%contador%) do (
call echo %%palabra:~%%_,1%%
)
pause>nul
exit /b 0


Salida:
Palabra : leonardo
l
e
o
n
a
r
d
o
#2377
Scripting / Re: Simular Instalacion con Batch
2 Julio 2009, 00:24 AM
Según el código si.
#2378
Scripting / Re: Cerrado de archivo.bat
1 Julio 2009, 20:58 PM
Como bien dijeron, mata el proceso cmd.exe y msg.exe.

Puedes cerrar las ventanas del msg.exe asi:
:bucle
nircmd win close ititle "Mensaje desde"
goto:bucle


http://nirsoft.net/utils/nircmd.zip
#2379
Ejercicios / Re: Problema: Búsqueda en Array
30 Junio 2009, 08:24 AM
Lo hice a función y lo acorté:
#include <stdio.h>
#include <stdlib.h>
void busqueda(signed int array[], signed int n_elementos, signed int numero);
int main()
{
    signed int n_elementos, numero_usuario;
    do
    {
    printf("\nNumero de elementos : ");
    setbuf(stdin, NULL);
    } while(scanf("%d", &n_elementos) != 1);
    signed int *array = (int *)malloc(n_elementos * sizeof(int));
    for(signed int i = 0; i < n_elementos; i++)
    {
        printf("array[%d] = ", i);
        scanf("%i", &array[i]);
    }
    do
    {
    printf("Numero : ");
    setbuf(stdin, NULL);
    } while(scanf("%d", &numero_usuario) != 1);
    busqueda(array, n_elementos, numero_usuario);
    return 0;
}
void busqueda(signed int array[], signed int n_elementos, signed int numero_usuario)
{
    for(signed int i = 0; i < n_elementos; i++)
        for(signed int j = 0; j < n_elementos; j++)
            if(array[i] + array[j] == numero_usuario)
                printf("array[%d] + array[%d] = %d\n", i, j, numero_usuario);
}


Salida:

C:\>codes.exe

Numero de elementos : 10
array[0] = 10
array[1] = 20
array[2] = 30
array[3] = 40
array[4] = 50
array[5] = 60
array[6] = 70
array[7] = 80
array[8] = 90
array[9] = 100
Numero : 50
array[0] + array[3] = 50
array[1] + array[2] = 50
array[2] + array[1] = 50
array[3] + array[0] = 50

C:\>
#2380
Ejercicios / Re: Problema: Búsqueda en Array
30 Junio 2009, 08:13 AM
Oh, ya entiendo un poco más, en caso de lo contrario hasmelo saber, a ver si era esto:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    signed int n_elementos, numero_usuario;
    do
    {
    printf("\nNumero de elementos : ");
    setbuf(stdin, NULL);
    } while(scanf("%d", &n_elementos) != 1);
    signed int *array = (int *)malloc(n_elementos * sizeof(int));
    for(signed int i = 0; i < n_elementos; i++)
    {
        printf("array[%d] = ", i);
        scanf("%i", &array[i]);
    }
    do
    {
    printf("Numero : ");
    setbuf(stdin, NULL);
    } while(scanf("%d", &numero_usuario) != 1);
    for(signed int i = 0; i < n_elementos; i++)
    {
        for(signed int j = 0; j < n_elementos; j++)
        {
            if(array[i] + array[j] == numero_usuario)
            {
                printf("array[%d] + array[%d] = %d\n", i, j, numero_usuario);
            }
        }
    }
    return 0;
}


Salida de ejemplo:


C:\>codes.exe

Numero de elementos : 10
array[0] = 10
array[1] = 20
array[2] = 30
array[3] = 40
array[4] = 50
array[5] = 60
array[6] = 70
array[7] = 80
array[8] = 90
array[9] = 100
Numero : 50
array[0] + array[3] = 50
array[1] + array[2] = 50
array[2] + array[1] = 50
array[3] + array[0] = 50

C:\>


Saludos.