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 - <ИΘZIЭ(ŦB>

#51
Qué tal amigos del foro? De nuevo reciban un cordial saludo.

Me aparezco nuevamente por aquí, pero esta vez para hacer un pequeño pero importante aporte, que me hubiese gustado mucho conseguir hace tiempo atrás.

Supongo que les ha pasado que han colocado letras acentuadas en un .bat y se topan con que al ejecutarlo, este les muestra otro caracter. Si son como yo que le doy importancia a la buena ortografía, imagino que no se conformarán con quitar el acento y dejar la palabra mal escrita.

En vista de eso, pasé mucho tiempo buscando la solución, y lo que pude encontrar por la red es que esto se debe a que el código ASCI de Windows no corresponde al de Batch. Sugerían usar un programa que mostraba las equivalencias entre ambos entornos, para de ese modo hallar los caracteres correctos. Con todo, el programa no me sirvió, así que seguí buscando y al fin hallé la manera.

He aquí los símbolos y caracteres que no se corresponden en Batch, y sus equivalencias:


Win=Batch

á=
é=,
í=¡
ó=¢
ú=£

Á=µ
É=
Í=Ö
Ó=à
Ú=é

ü=
Ü=š

ñ=¤
Ñ=¥

¡=­
¿=¨


Esos son los que me dieron problemas, pues en algunos diálogos los necesitaba.
Quiero que tengan en cuenta que aunque parece que me faltó colocar la equivalencia de á para batch no es así; en batch hay que usar ese espacio en blanco (que no es el mismo que se obtiene de la tecla TAB) para que muestre la á al ejecutar el código.
Otro detalle es el primer signo de admiración "¡"; en batch es una línea parecido a un guión, solo que no sé por qué aquí no se vé. Pero copien todo eso y guárdenlo en un .txt y verán que sale.
Yo particularmente los tengo en un .txt, y cada vez que los necesito los busco allí, los copio y los pego en el code.
Por último, si alguna vez tienen problemas con estos caracteres, pueden ejecutar esta línea en cmd:

echo áéíóúÁÉÍÓÚüÜñÑ¡¿ >c:\Caracteres.txt

Y así guardarán los caracteres equivalentes de batch en un archivo de texto.

Bueno, esto era todo. Espero de verdad que a muchos les sirva. Yo quise conseguir esta ayuda antes pero ni con google pude hallarla. Así que ahora que la tengo la comparto, siguiendo el buen ejemplo de todos los miembros del foro.
#52
Que tal pana! Estoy de acurdo contigo, este foro es lo máximo; siempre hay alguien dispuesto a ayudar, y sí que saben hacerlo.

Por otro lado, acabo de copiar tu code y no me funciona. ¿A ti te funcionó? A mí no me cambió nada. A ver si es que estoy haciendo algo mal.
#53
Scripting / Re: Problema con función EDLIN
1 Octubre 2009, 04:23 AM
Naaaaa... No lo puedo creer! Qué mal! Entonces tendré que usar otro método para modificar varios archivos de texto.
Gracias pana por la ayuda!
#54
Chamo! Escogí el useback y funcioné perfecto! Gracias pana! Lo malo es que no comprendí qué función cumple e useback. Podrías decirme? De verdad te agradezco.
#55
Que tal compañeros del foro?

Acabo de toparme con un error del EDLIN que me deja de manos atadas. Hace poco uno de los amigos del foro me ayudó a editar un archivo de texto, especificamente para cambiar una línea por otra. Esto fue lo que me enseñó:


@echo off
set /p file=Indique el archivo a procesar:
set /p text=Indique el texto nuevo:
set /p line=Indique el numero de linea:
(
echo %line%
echo %text%
echo w
echo e
) | edlin /b %file%


Esto funciona bien, pero deja de funcionar cuando el nombre del archivo contiene comillas. Generalmente esto ocurre cuando el nombre del archivo contiene espacios en blanco.

Por eso mi pregunta es, cómo se hace en este caso para que las comillas no representen un problema? Les agradezco su ayuda.
#56
Cómo están amigos del foro? De nuevo necesito su valiosa ayuda.

Resulta que estoy usando un FOR para traerme una por una las línes de un archivo de texto. Fíjense:

Tengo este archivo de texto: Archivo.txt, cuyo contenido es el siguiente:

Linea 1
Linea 2
Linea 3


Las líneas me las traigo como ya saben:


@echo off
set crrFile=c:\Archivo.txt
for /f "tokens=*" %%L in ("%crrFile%") do (
    echo Procesando linea: %%L
)
echo.
echo Terminado
pause>nul


Esto funciona perfecto. Me lista las líneas justo como quiero:


Linea 1
Linea 2
Linea 3

Terminado.


Ahora bien, el problema se me presenta cuando uso este mismo código en una función llamada desde otro ciclo FOR. Vean cómo:

Esta vez tengo tres archivos de texto: Archivo1.txt, Archivo2.txt y Archivo3.txt, los cuales tienen el mismo contenido:


Linea 1
Linea 2
Linea 3


Pues bien, para listar las líneas de cada uno hago lo siguiente:


@echo off
:Funcion1
for /f "tokens=*" %%F in ('dir /a /b *.txt') do (
    set "crrFile=%%F"
    echo Procesando archivo: %%F
    call:Funcion2
    echo.
)
echo.
echo Terminado
pause>nul

:Funcion2
for /f "tokens=*" %%L in ("%crrFile%") do (
    echo Procesando linea: %%L
)
goto:eof


Como ven, el código para listar el txt es igual al del primer caso; la única diferencia es que aquí tomo el nombre del archivo del ciclo FOR ejecutado en :Funcion1. Lo que no entiendo es por qué el ciclo de :Funcion2 no lista las líneas del archivo, aunque la variable %crrFile% si almacena bien el nombre de cada archivo de texto. En vez de eso, el segundo ciclo me vuelve a mostrar el nombre del archivo contenido en %crrFile%. Fíjense:


Procesando archivo: C:\Archivo1.txt
Procesando linea: C:\Archivo1.txt

Procesando archivo: C:\Archivo2.txt
Procesando linea: C:\Archivo2.txt

Procesando archivo: C:\Archivo3.txt
Procesando linea: C:\Archivo3.txt

Terminado.


Ven? No entiendo por qué hace esto! No muestra las líneas del archivo sino el nombre del archivo.
Por favor, alguien sabe por qué pasa eso? Yo de verdad no entiendo. Le agradezco puedan ayudarme.
#57
Bueno amigos del foro, les cuento que hallé una forma para contrarrestar este error que presenta la variable del FOR. Pude conseguirla gracias a la ayuda de unos compañeros, y pueden encontrarla en el otro tema relacionado que publiqué. Este es el enlace:

http://foro.elhacker.net/scripting/problema_con_variable_del_for_batch_solucionado-t268022.0.html

Gracias de nuevo.
#58
Scripting / Re: Problema con variable del FOR (Batch)
20 Septiembre 2009, 07:31 AM
Sí, eso es.

Bueno amigo Guerrero, aplicando la idea que me diste de los FOR pude hallar la solución que quería. Traté de implementar el otro método del amigo Leo, pero en vista de que tengo que volver a usar el delayexpansion que no me gusta, me quedo mejor con esta. Así lo hice:


@echo off
set lin=0
for /f "tokens=*" %%a in (MiLista.log) do (
        set textoLinea=%%a
        set /a lin+=1
        call:show
)
exit

:show
If not exist "%textoLinea%" call:iniSpace
echo "Línea %lin%: %textoLinea%"
goto:eof

:iniSpace
set "textoLinea= %textoLinea%"
If not exist "%textoLinea%" goto iniSpace
goto:eof


Con esto sí logro mi resultado deseado:


Linea 1: "Archivo1.txt"
Linea 2: "!Archivo.txt"
Linea 3: " archivo.txt"


Gracias de verdad por su preciado aporte! Siempre me sacan del apuro!
#59
Scripting / Re: Problema con variable del FOR (Batch)
20 Septiembre 2009, 06:40 AM
Que tal Leo?

Probé lo que dices y funciona excepto por esto:


@echo off
set cont=0
for /f "tokens=*" %%_ in ('dir /b "ruta"') do (
       set /a cont+=1
       echo "(%cont%) %%_"
)


No me suma el %cont%. Todo el listado aparece con (0) al inicio. ¿Por qué?
#60
Scripting / Re: Problema con variable del FOR (Batch)
20 Septiembre 2009, 05:03 AM
Amigo, primero gracias por el interés. Estoy aquí revisando cada rato el foro porque estoy varado por eso. Ahora, quisiera algunos detalles que no entiendo bien, si no es molestia.

Yo soy nuevo programando en batch, por eso no sé algunas cosas. Por ejemplo, eso de usar el comando DIR dentro del FOR ¿cómo funciona? Yo en mi batch primero uso el dir para crear mi MiLista.log, y luego es que me traigo la lista al batch. ¿No es necesario hacer eso? ¿Podrías modificar tu ejemplo justo con los datos que yo suministré? O sea, usando el nombre del archivo que yo tengo (MiLista.log). ¿Dónde iría en ese ejemplo?

Te lo agradezco.