[DUDA] ¿Cómo ocultar la flechita resultante al modificar un txt en batch? URGE!!

Iniciado por z3nth10n, 3 Mayo 2012, 21:08 PM

0 Miembros y 3 Visitantes están viendo este tema.

z3nth10n

Hola amigos, bueno, ya le pregunte a Elektro H@cker, pero como no me leí las reglas, lo posteo por aquí. La duda es la siguiente:

Tenemos un BATCH, que me sirve para administrar usuarios que estan en una lista.
Ok, hasta aquí tengo las opciones de crear un nuevo usuario, elegir uno como prederterminado (que todavía no lo he hecho pero creo que es sencillo), y BORRAR el usuario. Vale, hasta aquí todo bien, la pregunta es la siguiente, yo tengo este código para borrar un usuario:

:MC1
cls
echo Seleccione usuario para borrar:
echo.
set /a c=0
for /f "tokens=*" %%a IN (file.txt) DO (set linea=%%a&call:aum)
echo.
set /p numero=">> "
if not defined numero goto:MA
(
ECHO %numero%d
ECHO E
) | EDLIN /B file.txt > nul 2>&1
del FILE.BAK
goto:MA


Bueno, en file, se me olvida comentar que hay cuatro cohrradas escritas:

nrhfpevcvkjñ
bvcjkscbnk
nvfnñl

Queria poner un spoiler, pero no puedo porque no sabia que no habia, (esta comunidad hace ya siglos que no la visito)

Todo bien, hasta que cuando le doy a borrar, miro en file.txt, y (otro problema, es que le pone el nombre en mayusculas, y lo renombra con el nombre de FILE.txt), el problema es que al final, me aparece una flechita (que aqui no puedo poner para que veais el desastre). Vale, eliminar esa flechita a toda costa, pero no se como,
no he probado todavia a:

1.- Crear un file2 (que creo que también se lleva la linea consigo, y parte no lo he hecho funcionar, por eso digo que no lo he probado), renombrarlo, y borrar los .bak

2.- Al mostrar el txt no mostrar las palabras con menos de dos caracteres, (he probado tecnicas de leo gutierrez, pero no funcionan), y aparte no se como implementarlo a este código (que se supone que al mostrar el .txt lo enumera, ej: 1. lalala; 2. lololo, etc...):

set /a c=0
for /f "tokens=*" %%a IN (file.txt) DO (set linea=%%a&call:aum)


3. No me acuerdo, porque las demas tecnicas las he probado y nada, todo requiere algo que da a lugar a la maldita flechita...

Bueno, necesito ayuda, necesito que alguien lo suficientemente "listo" en batch me diga la solucion, y si no se puede quitar, pues posibles soluciones, pero que sea en batch, que yo quiero esto para un proyecto, que mas tarde si se puede publicare y mostrare a usuarios indigentes como yo a como manejar el batch en un sencillo batch.

También posibles soluciones, es que se creen varios archivos con cada uno de los nombres y luego eliminar el archivo, pero esto daria mas problema, porque yo quiero que sea 1 archivo como minimo y 2 como maximo (porque luego tengo otro en el que pondre mas cosas (como los defaults, o el usuario predeterminado o sistema de lenguajes que no se si se podra hacer, y luego posteare otro post con ayuda)).

Necesito una solucion fácil de entender para el usuario, y si es muy complicado para mi, (que supongo que lo sera, si es que hay solucion), que se explique para mí.

Gracias de antemano, y un saludo.

Interesados hablad por Discord.

ELVJop

No lo probe (ahora hago los .bat para probar) pero beo primeramente 1 error:

set /a c=0

/a es para operaciones matematicas si no es :

set c=0

2. Pon alguna captura de pantalla plis
3. Hago un pos con tan poca info porque veo que segun el titulo URGE! xD
4. Encontrando errores:

lo de enumerar lo soluciono rapido:
No dire como porque me tengo que ir pero al guardar el nombre al archivo guardalo de la siguiente manera:
1. %nombre que me digiste%
2. %nombre que me digiste%

Lo de borrar no se si se puede hacer (normalmente busco info antes de responder pero si es urgente (tambien me boy ahora)) la flechita esa equivale a este valor:
(no lo pude pegar no se porque) si encontras una forma de ir a la linea que mencionaste y borrar ese caracter quizas funcionaria.

Lo del nombre en mayuscula no se si sera tan tan importante

PD: Hay muchos post de localizar y borrar una linea de texto busca en google o en esta sección
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

Cita de: ELVJop en  3 Mayo 2012, 21:46 PM
No lo probe (ahora hago los .bat para probar) pero beo primeramente 1 error:

set /a c=0

/a es para operaciones matematicas si no es :

set c=0


Eso no es ningún error, Se puede usar de las dos formas, siempre que séa un número




Cita de: Seazoux en  3 Mayo 2012, 21:08 PM
2.- Al mostrar el txt no mostrar las palabras con menos de dos caracteres, (he probado tecnicas de leo gutierrez, pero no funcionan), y aparte no se como implementarlo a este código (que se supone que al mostrar el .txt lo enumera, ej: 1. lalala; 2. lololo, etc...):

@Echo OFF
Setlocal enabledelayedexpansion

:: By Elektro H@cker
:: Este code compara la longitud de las lineas de un archivo de texto, Solo muestra lineas con longitud superior a 2 caracteres.

For /F "Tokens=*" %%# in ('type archivo.txt') Do (
ECHO %%#>"%TEMP%\tempfile.txt"
FOR %%? IN ("%TEMP%\tempfile.txt") DO ( SET /A longitud=%%~z? - 2 )
If !longitud! GTR 2 (Set /A Line+=1&& echo !Line!. %%#)
)
Pause
Exit




@Echo OFF
Setlocal enabledelayedexpansion

:: By Elektro H@cker
:: Este code compara la longitud de las palabras en un archivo de texto, linea por linea. Solo muestra palabras con longitud superior a X caracteres.

Set Longitud_de_palabras=2

For /F "Tokens=*" %%# in ('type archivo.txt') Do (
ECHO %%#>"%TEMP%\tempfile.txt"
FOR %%? IN ("%TEMP%\tempfile.txt") DO ( SET /A LINE_LEN=%%~z? - 2 )
Set "String= %%# "
Call :Contador %%#
If Defined FinalString (Set /A Line+=1& Echo !Line!.!FinalString!)
Set FinalString=
)
Pause
Exit

:Contador
Set /A Next+=1
Set "char=!String:~%NEXT%,1!"
If NOT "!char!" EQU " " (Set "WORD=%WORD%!char!") ELSE (Call :Word_Lenght "!WORD!")
If !NEXT! GTR !LINE_LEN! (Set /A NEXT=0&& goto :EOF)
Goto :Contador

:Word_Lenght
ECHO %*>"%TEMP%\tempfile.txt"
FOR %%? IN ("%TEMP%\tempfile.txt") DO ( SET /A WORD_LEN=%%~z? - 4 )
If !WORD_LEN! GTR %Longitud_de_palabras% (Set "FinalString=%FinalString% !WORD!")
Set "WORD="
Goto :EOF







Sobre lo de "la flechita" No puedo ayudarte porque uso windows 7, Y sinceramente, Si piensas compartir tu code con muchas personas, Deberias replantearte si haces bien en usar EDLIN , Ya que solo podrían usar tú code aquellas personas que tengan Windows XP.

Una solución sería esta:

Código (dos) [Seleccionar]
@Echo OFF

Set "File=%~dp0\Lista.txt"

(
Echo alvaro
Echo marcos
Echo elektro
Echo puntoinfinito
Echo judith
) > "%FILE%"

Type Lista.txt | MORE
Echo+ Que usuario quieres borrar? (Escribe su nombre)
Set /P User= ^>

Move /Y "%FILE%" "%TEMP%\Temp.txt" 1>NUL
Find /V /I "%USER%" "%TEMP%\Temp.txt" | Find /V "TEMP.TXT" > "%FILE%"

Cls
Echo Usuario %USER% borrado.
Pause
Exit


Salu2.








z3nth10n

Todavía no he probado el código pero pienso que no es lo que quiero, porque yo nesito algo que muestre palabras de más de 2 caracteres, no de menos de 2 caracteres. Si quieres y no estás muy ocupado, te agregue a MSN, por ahí si quieres hablamos, necesito verdadera ayuda, porque soy nuevo en batch, pero es realmente fácil de aprender.

Interesados hablad por Discord.

Eleкtro

Cita de: Seazoux en  4 Mayo 2012, 10:13 AM
yo nesito algo que muestre palabras de más de 2 caracteres, no de menos de 2 caracteres.

Ups! Lo entendí al revés, No se porque jaja, En unos minutos edito los codes de arriba ;).

EDITO: Ahí lo tienes, Salu2.








z3nth10n

Ah, muchas gracias, yo también suponía que sería tan fácil como cambiar un LSS por un GTR.
Bueno, quieres ayudarme en el proyecto, digo, solo participar. ???

RE-EDITO: ¿Yo no puedo eliminar una linea directamente?, yo creo más comodo para los usuarios que ponga el numero de la linea, no el nombre, digo si se puede, y si se pudiese, ¿cómo?

RE-RE-EDITO: Probe tu código y va de perlas. Sigo con el EDLIN, y pongo esto como solución parcial. Eres bastante bueno...  ;-)

EDITO: No cierro el tema, porque quiero preguntar algo más, no se si se puede preguntar dos cosas distintas en un mismo tema. Si es así, pregunto:

¿Se puede descargar un contenido alojado en un servidor a traves de batch en un directorio?, si es que es posible, claro está...

Interesados hablad por Discord.

z3nth10n

!IMPORTANTE¡

Tu código Elektro no funciona bien...
cuando dice de enumerar algo, y pasar a la siguiente ventana en vez de salir 1,2,3,4
sale 5,6,7,8... a ver si puedes corregir eso.

Interesados hablad por Discord.

Eleкtro

Cita de: Seazoux en  4 Mayo 2012, 22:45 PM
Tu código Elektro no funciona bien...
cuando dice de enumerar algo, y pasar a la siguiente ventana en vez de salir 1,2,3,4
sale 5,6,7,8... a ver si puedes corregir eso.

No, No puedo corregirlo porque no entiendo que quieres decir con "ventana", A mi me funciona bien  :-\.

Te di las herramientas para poder hacerlo por ti mismo, puedes estudiarlo.

Salu2!








z3nth10n

Perdón por la tardanza, es que me entretuve en resolver en estos dias un problemilla con el batch, vale... este es el problema:

TU CÓDIGO:

@Echo OFF
Setlocal enabledelayedexpansion

:: By Elektro H@cker
:: Este code compara la longitud de las lineas de un archivo de texto, Solo muestra lineas con longitud superior a 2 caracteres.

For /F "Tokens=*" %%# in ('type archivo.txt') Do (
ECHO %%#>"%TEMP%\tempfile.txt"
FOR %%? IN ("%TEMP%\tempfile.txt") DO ( SET /A longitud=%%~z? - 2 )
If !longitud! GTR 2 (Set /A Line+=1&& echo !Line!. %%#)
)
Pause
Exit


Lo que saque de TU CÓDIGO:

Setlocal enabledelayedexpansion
For /F "Tokens=*" %%# in ('type file.txt') Do (
del %TEMP%\tempfile.txt
ECHO %%#>"%TEMP%\tempfile.txt"
FOR %%? IN ("%TEMP%\tempfile.txt") DO ( SET /A longitud=%%~z? - 2 )
If !longitud! GTR 2 (Set /A Line+=1&& echo !Line!. %%#)
)


Ok, te voy a mostrar la pantallas que subí en 10 minutos todas:

Se inicia correctamente, como puedes observar:



Yo selecciono la primera opción:



Me sale la ventanita:



Y bien, yo voy donde sale tu código



Que es aquí:



Fíjate en lo que he encuadrado, porque cuando pongo la siguiente opción:



Mira lo que sale:



A ver, si me puedes hechar una mano, porque a mi como a los bebes, ahi que darlo todo masticado, soy bastante nuevo como que empece una semana y solo he tenido 2 horas diarias para practicar, lo que hace 14 h no menos de un dia... la mitad un poco más...
asi que sin mas rollos, por favor, ayudaaame, te lo suplico

gracias, y un saludo  :D

Interesados hablad por Discord.

Eleкtro

Lo único que tienes que hacer es devolverle el valor "0" a la variable...

Código (dos) [Seleccionar]
Set /A Line=0

Lo que no se es en que parte del code debe ir, Porque no lo has mostrado entero.
Con que setees de nuevo la variable después de la comprobación condicional, así, sirve:

Código (dos) [Seleccionar]
If "%opcion%"== "e" (Set /A Line=0 &...etc etc)

Creo que se entiende... Tienes que setearla ahí, por ejemplo.

Salu2!