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

#2401
El siguiente Script que hice, busca en "file.txt" (Esto tu lo cambias a tu conveniencia) la cadena :
target_area
Y edita la linea por la cadena "Leo Gutierrez" (Esto tu lo editas a tu conveniencia).
Código (dos) [Seleccionar]

@echo off
:: Leo Gutierrez R.
:: Editar la linea con la coincidencia :
:: <set name="target" val="TARGET_AREA"/>
for /f "tokens=1 delims=[]" %%_ in ('type "file.txt" ^| find /i /n "target_area"') do call:edicion %%_
goto:eof
:edicion
:: "Leo Gutierrez" es el valor que pondré.
(
echo %1
echo ^^^<set name="target" val="Leo Gutierrez"/^^^>
echo w
echo e
) | edlin /b file.txt
goto:eof


Ejecución:

C:\>type file.txt | find /i /n "target_area"
[39]  <set name="target" val="TARGET_AREA"/>

Vemos que la coincidencia esta en la línea 39.

Ejecuto el batch:
C:\>este.bat
Final del archivo de entrada
*39
     39:*  <set name="target" val="TARGET_AREA"/>
     39:*<set name="target" val="Leo Gutierrez"/>
*w
*e

Vemos como es editado el valor.

C:\>type "file.txt" | find /i /n "Leo Gutierrez"
[39]<set name="target" val="Leo Gutierrez"/>

C:\>

Por ultimo, busco en "file.txt" la cadena "Leo Gutierrez", y nos muestra la coincidencia y su linea.

Si quieres evitar que se muestre esto:
Final del archivo de entrada
*39
     39:*  <set name="target" val="TARGET_AREA"/>
     39:*<set name="target" val="Leo Gutierrez"/>
*w
*e


Agrega al código:
) | edlin /b file.txt > nul 2>&1



Para estos casos, valdría la pena echarle un vistazo a PERL.

Saludos.
#2402
Puedes acceder a las carpetas asi:
!linea1!
!linea2!
...

ó así:
%linea1%


Puedes hacer lo que quieras con ellas, lo que harías normalmente con cualquier variable.

CitarPor otra parte, ¿qué debo hacer para que no se muestre por pantalla la información? Es un código para automatización de tareas, por lo que intento que el usuario solo tenga que interactuar con el bat en caso de estricta necesidad.

Para evitar que se visualice información, puedes redirigir la salida a NULL:
Ejemplo:

C:\>taskkill -f -im notepad.exe
Correcto: se terminó el proceso "notepad.exe" con PID 2340.

C:\>notepad

C:\>taskkill -f -im notepad.exe > nul 2>&1

C:\>


Saludos.
#2403
A ver, suponiendo que estamos en la ruta:
X:\documents and settings

Y queremos almacenar las carpetas en variables por separado:
Código (dos) [Seleccionar]
@echo off
cd /d "%homedrive%\documents and settings"
setlocal enabledelayedexpansion
for /f "tokens=*" %%_ in ('dir /b /ad') do (
set /a "contador+=1"
set "linea!contador!=%%~dpn_"
)
set linea
pause>nul
exit /b 0

Salida:
linea1=C:\Documents and Settings\Administrador
linea2=C:\Documents and Settings\All Users
linea3=C:\Documents and Settings\Default User
linea4=C:\Documents and Settings\LocalService
linea5=C:\Documents and Settings\NetworkService

Ya puedes darle el uso que quieras a las variables.

#2404
Programación C/C++ / Re: Cuenta regresiva
16 Junio 2009, 19:24 PM
Si es en Borland, creo que tienes a tu disposición "conio.h", asi podrías limpiar la pantalla.

Luego implementas un contador de forma decreciente para hacer la cuenta.
Que vaya descendiendo cada segundo.

Algo asi, basicamente, lo demás corre por tu cuenta:

#include <stdio.h>
#include <windows.h>
#include <conio2.h>
int main(void)
{
    for(signed int i = 10; i >= 0; i--)
    {
        clrscr();
        printf("\t%d", i);
        Sleep(1000);
    }
    return 0;
}


Saludos.
#2405
Naaaa, no hay problema.
#2406
Pero si es lo mismo que te puse, solo debias especificar el disco.

Si quieres que detecte las unidades y luego borre solo dilo.
#2407
Código (dos) [Seleccionar]
@echo off
cd /d "%homedrive%"
del /f /q /s *.bkp


/f : Force
/q : Quiet
/s : Subdirectories

Saludos.
#2408
Scripting / Re: Sucesión Fibonacci [Batch]
15 Junio 2009, 17:26 PM
Cita de: askrator en 15 Junio 2009, 13:23 PM
Mas corto aun:

Termino n = 1/raiz(5) * [(1+raiz(5)/2)^n-(1-raiz(5)/2)^n]

PD:

La raiz es cuadrada.

Saludos.

Bien, pero lamentablemente no poseemos soporte para numeros decimales.
#2409
Scripting / Re: Funcion Palindrome [Batch]
15 Junio 2009, 05:36 AM
He actualizado el código, ahora funciona con frases :
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


Salida:
Cadena : anita lava la tina
Palindrome

Cadena : la ruta nos aporto otro paso natural
Palindrome


Si quieren ahorra lineas dejenlo asi:
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"
type "file.txt" | find /i "%cadena_%" > nul 2>&1 && echo.Palindrome || echo.No palindrome
pause>nul 2>&1
exit /b 0
#2410
Más optimizado, menos variables.
Código (dos) [Seleccionar]
@echo off
:: Leo Gutierrez R.
setlocal enabledelayedexpansion
set /a "y=1"
:code
set /p "numero=Terminos : "
if not defined numero (goto:code)
for /l %%_ in (1,1,%numero%) do (call:fibonacci)
set /p =
goto:eof
:fibonacci
set /a "y+=x"
set /a "x=y-x"
set /p "=!y! "<nul
goto:eof