Autor
|
Tema: [DUDA] ¿Cómo ocultar la flechita resultante al modificar un txt en batch? URGE!! (Leído 7,048 veces)
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
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.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
ELVJop
Desconectado
Mensajes: 132
|
No lo probe (ahora hago los .bat para probar) pero beo primeramente 1 error: /a es para operaciones matematicas si no es : 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
|
|
« Última modificación: 3 Mayo 2012, 21:58 pm por ELVJop »
|
En línea
|
El dia 3 de mayo esta cuenta sera borrada.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
No lo probe (ahora hago los .bat para probar) pero beo primeramente 1 error: /a es para operaciones matematicas si no es : Eso no es ningún error, Se puede usar de las dos formas, siempre que séa un número
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: Set "File= %~dp0\Lista.txt" ( ) > "%FILE%" Type Lista.txt | MORE Echo+ Que usuario quieres borrar? (Escribe su nombre ) 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.
Salu2.
|
|
« Última modificación: 4 Mayo 2012, 11:10 am por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
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.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
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.
|
|
« Última modificación: 4 Mayo 2012, 11:08 am por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
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á...
|
|
« Última modificación: 4 Mayo 2012, 15:06 pm por Seazoux »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
!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.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
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!
|
|
« Última modificación: 5 Mayo 2012, 07:01 am por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
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
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Lo único que tienes que hacer es devolverle el valor "0" a la variable...
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: If " %opcion%"== "e" (Set /A Line=0 &...etc etc )
Creo que se entiende... Tienes que setearla ahí, por ejemplo. Salu2!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[BATCH] Ocultar lo que hace una orden (SOLUCIONADO)
Scripting
|
Scratz
|
3
|
2,962
|
4 Noviembre 2007, 18:15 pm
por nhaalclkiemr
|
|
|
[Batch] Ocultar codigo
Scripting
|
Kobra5
|
5
|
6,665
|
3 Marzo 2009, 20:09 pm
por Kobra5
|
|
|
ocultar ventana cmd con batch puro?[Solucionado]
Scripting
|
DaNNiXs
|
4
|
21,693
|
25 Diciembre 2009, 23:05 pm
por DaNNiXs
|
|
|
Suma MD5 resultante diferente cada vez que compilo
GNU/Linux
|
SnakeDrak
|
2
|
2,768
|
5 Noviembre 2010, 14:29 pm
por SnakeDrak
|
|
|
¿Como puedo ocultar mi codigo en batch?
Scripting
|
DeSsy
|
6
|
5,155
|
27 Noviembre 2010, 23:12 pm
por DeSsy
|
|