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

#2381
A ver, te voy a dejar un ejemplo.

Tengo el siguiente archivo:
file.txt:
C:\>type "file.txt"
jsldkfjls dsjdklfjsdklfj 2wlkj Error
C:\>


Como ves, si esta la palabra "error", ahora al código:
Código (dos) [Seleccionar]
type "file.txt" | find /i "error" > nul 2>&1 && (set "error=1") || (set "error=0")


Si en el archivo "file.txt" existe la palabra "error", se seteará la variable "error" a 1, sino a 0.

Saludos.
#2382
Ejercicios / Re: Problema: Búsqueda en Array
29 Junio 2009, 04:58 AM
La verdad no entiendo el enunciado, ¿podrias explicar con tus palabras de que trata el algoritmo?
#2383
En Perl:
Código (perl) [Seleccionar]
#!/usr/bin/perl
use strict;
use warnings;
print "Escriba palabra : ";
chomp(my $word = <STDIN>);
if($word eq reverse($word))
{
print "Palindromo";
} else {
print "No palindromo";
}
exit;


En Batch:
Código (dos) [Seleccionar]
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena=%cadena: =%"
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
for /f "tokens=*" %%_ in (file.txt) do (
if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
)
pause>nul 2>&1
exit /b 0
#2384
#include <stdio.h>
#include <string.h>
void cadena_inversa(char cadena[], char cadena2[]);
int main(void)
{
    char cadena[200];
    printf("Cadena : ");
    scanf("%199s", cadena);
    char cadena2[200];
    cadena_inversa(cadena, cadena2);
    if(!strcmp(cadena, cadena2))
    printf("Es palindrome");
    else
    printf("No es palindrome");
    return 0;
}
void cadena_inversa(char cadena[], char cadena2[])
{
/* Se copia la cadena inversa en "cadena2" */
    signed int contador = 0;
    for(signed int i = strlen(cadena)-1; i >= 0; i--)
    cadena2[contador++] = cadena[i];
    cadena2[contador] = 0;
    }
#2385
Lo que debes de hacer, es utilizar un comando que te detecte las unidades removibles o USB, luego, en la salida de dicho comando, debes buscar la unidad que quieres comprobar, en caso de que no se encuentre hacer la acción, ya que ha sido removida.


C:\>usbs -usb
G:\

C:\>

Veo las unidades removibles en el sistema.

Voy a sacar la unidad G:\ :

C:\>usb -q g:

C:\>


Ahora la unidad ya no esta en el sistema:

C:\>usbs -usb

C:\>


Ahora, usemos el comando:
wmic logicaldisk get caption, description

Que nos da la salida:

C:\>wmic logicaldisk get caption, description

Caption  Description
C:       Disco fijo local
D:       Disco CD-ROM
G:       Disco extraíble


C:\>


Ahora la linea que usaremos:

C:\>wmic logicaldisk get caption, description | find /i "G:" > nul 2>&1 || (echo.Accion)
Accion

C:\>


Saludos.
#2386
Scripting / Re: [Batch] For dentro de for
25 Junio 2009, 20:45 PM
Que bien, no se me había ocurrido  :D

No hace falta escapar '(', solo ')'.

Salida:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion

set desordenados=100 008 066 077 000 520
call :ordenar %desordenados%
echo.Desordenados:%desordenados%
echo.Ordenados:%ordenados%
pause
goto :eof

:ordenar
for /f "tokens=*" %%a in (
'
(for %%_ in (%*^) do @echo.%%_^)^|sort
'
) do set ordenados=!ordenados!%%a

goto :eof

Salida:
Desordenados:100 008 066 077 000 520
Ordenados:000 008 066 077 100 520
Presione una tecla para continuar . . .


Saludos, 0x0309.
#2387
No necesitas crear una variable ni usar extracción de caracteres, la variable ya la tienes:
@echo off
echo.%~d0
#2388
Usa nircmd.exe para refrescar:
Código (dos) [Seleccionar]
@echo off
explorer %~d0
nircmd sendkey 0x74 press


Nircmd:
http://nirsoft.net/utils/nircmd.zip

Saludos.
#2389
Código (dos) [Seleccionar]
@echo off
echo "%~n0"
pause>nul
exit /b 0

set "yo=%~n0"

Saludos.
#2390
Scripting / Re: Filtro Anti- BatchInyection
23 Junio 2009, 07:03 AM
Por fin, volví a hacer el código desde 0, aqui esta la versión final:
Código (dos) [Seleccionar]
@echo off
copy /y nul+nul "char.txt" > nul 2>&1
for /f "tokens=1" %%_ in (char.txt) do set "char=%%_"
:code
set /p "name=Name : "
if not defined name (goto:code)
set "name=%char%%name%"
for /f "tokens=1* delims=%char%" %%a in ('set name ^| findstr /r /i "^Name"') do (
echo Has escrito : %%b
set "algo=%%b"
)
setlocal enabledelayedexpansion
echo Variable asignada %%algo%% = {!algo!}
pause>nul
exit /b 0


Salida:

C:\>este
Name : &cmd
Has escrito : &cmd
Variable asignada %algo% = {&cmd}

C:\>este
Name : ! leo !
Has escrito : ! leo !
Variable asignada %algo% = {! leo !}

C:\>este
Name : !!
Has escrito : !!
Variable asignada %algo% = {!!}

C:\>este
Name : &&
Has escrito : &&
Variable asignada %algo% = {&&}

C:\>este
Name : ||
Has escrito : ||
Variable asignada %algo% = {||}

C:\>este
Name : |calc
Has escrito : |calc
Variable asignada %algo% = {|calc}

C:\>este
Name : <
Has escrito : <
Variable asignada %algo% = {<}

C:\>este
Name : > leo.txt
Has escrito : > leo.txt
Variable asignada %algo% = {> leo.txt}

C:\>este
Name : %homepath%
Has escrito : %homepath%
Variable asignada %algo% = {%homepath%}

C:\>este
Name : &goto:eof
Has escrito : &goto:eof
Variable asignada %algo% = {&goto:eof}

C:\>^goto:eof

C:\>este
Name : ^^
Has escrito : ^^
Variable asignada %algo% = {^^}

C:\>


Name : |!""'\<<>><>&cmd&calc|find /i "lkasd"
Has escrito : |!""'\<<>><>&cmd&calc|find /i "lkasd"
Variable asignada %algo% = {|!""'\<<>><>&cmd&calc|find /i "lkasd"}

Cualquier error, haganlo saber.

Saludos.