elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Como leer un texto que hay en [Batch] con el Bloc de notas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Como leer un texto que hay en [Batch] con el Bloc de notas  (Leído 5,898 veces)
MaX2

Desconectado Desconectado

Mensajes: 116


Ver Perfil
Como leer un texto que hay en [Batch] con el Bloc de notas
« en: 8 Febrero 2022, 18:57 pm »

Hola, no sé cómo explicaros esto ya que no tengo mucha idea de programar los archivos BAT.

Tengo creado un menú y una de sus opciones es leer un texto que hay en ese archivo bat con el bloc de notas.
He ido viendo ejemplo de cómo abrirlo, y lo hace, pero no entiendo esos comandos, para poder modificarlos y que pueda abrir el bloc de notas en modo UTF8, o que al crear el archivo temporal lo cree en modo UTF8, y así poder leer las letras con acentos, la ñ, etc.

Os pongo el código que estoy utilizando, a ver si alguien me puede decir que hay que cambiar para poder mostrar el texto con sus acentos.

Desde el menú llamo a :readme

Código:
set "_batf=%~f0"
set "_batp=%_batf:'=''%"

:readme
set "_ReadMe=%SystemRoot%\Temp\ReadMe.txt"
if exist "%_ReadMe%" del /f /q "%_ReadMe%" %nul%
call :export txt "%_ReadMe%"
start notepad "%_ReadMe%"
del /f /q "%_ReadMe%"
exit /b

:export
%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]:: ASCII);"
exit/b

:txt:
Aplicación
Español
Inglés

:txt:


Gracias.


En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #1 en: 8 Febrero 2022, 19:25 pm »

mira esto: Poner acentos en archivo BAT ¿van por ahí los tiros?


En línea


MaX2

Desconectado Desconectado

Mensajes: 116


Ver Perfil
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #2 en: 8 Febrero 2022, 20:16 pm »

Hola .xAk., no, no es eso, como muestro en ese ejemplo del primer post, tengo un texto dentro del archivo BAT que quiero mostrarlo con el bloc de notas.

lo que hace el bat es crear un archivo readme.txt y copia ese texto en ese archivo readme.txt, y luego lo abre con el bloc de notas

start notepad "%_ReadMe%"

pero en ese cambio parece que pierde los acentos, ya que en el archivos bat si esta escrito con los acentos.


En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #3 en: 8 Febrero 2022, 21:54 pm »

Citar
Las páginas de códigos ANSI pueden ser diferentes en equipos diferentes o se pueden cambiar para un solo equipo, lo que provoca daños en los datos. Para obtener los resultados más coherentes, las aplicaciones deben usar Unicode, como UTF-8 o UTF-16, en lugar de una página de códigos específica.

empieza tu archivo .bat o .cmd con

Código:
chcp 65001
En línea


MaX2

Desconectado Desconectado

Mensajes: 116


Ver Perfil
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #4 en: 8 Febrero 2022, 22:26 pm »

El archivo es cmd

Y si que tengo puesto en ese archivo en código chcp para que en ese cmd ser puedan ver los acentos, pero el problema no lo tengo es ese cmd, si no en el TXT que se crea desde ese cmd
En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #5 en: 8 Febrero 2022, 22:39 pm »

tienes que adaptarte al archivo, ha sido creado de cualquier manera.  Lo puedes identificar y mientras trates con él estar en su entorno. ... déjamelo mirar ... la codificación del archivo se puede determinar ... el chcp lo puedes usar sin parar

iDefaultEncoding
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad

que también es para cada máquina diferente y se puede cambiar ... pero quizás no le guste al usuario ... mejor adaptarse. El archivo creado ha sido creado diferente que en unicode. Son problemas de antaño
« Última modificación: 9 Febrero 2022, 00:50 am por .xAk. » En línea


EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.164



Ver Perfil
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #6 en: 9 Febrero 2022, 01:19 am »

Por defecto PowerShell trabaja con UTF8, no es necesario especificar esa codificación si esa es la que vas a utilizar. De todas maneras tu estás especificando que use ASCII, por eso no te guarda bien los acentos, el siguiente ejemplo funciona perfectamente:

Código
  1. Set "_ReadMe=%WinDir%\Temp\ReadMe.txt"
  2. Set "yo=%~f0"
  3. Del %_ReadMe% >NUL 2>&1
  4. Call :export txt "%_ReadMe%"
  5. Start notepad "%_ReadMe%"
  6. Exit /B
  7.  
  8. :export
  9. PowerShell $f=[io.file]::ReadAllText('%yo%') -Split ':%~1:';[io.file]::WriteAllText('%~2',$f[1].Trim())
  10. Exit /B
  11.  
  12. :txt:
  13. Aplicación
  14. Expañol
  15. Inglés
  16.  
  17. :txt:

Si lo deseas puedes especificar la codificación UTF8:

Código
  1. [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::UTF8)
En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #7 en: 9 Febrero 2022, 03:14 am »

offtopic How To file in batch?

magic number frnd

sigo sin enterarme

si, vale, los dos primeros ochos, pero en texto plano, el primero que no es ASCII identifica ANSI

¿y el file en DOS++?

a ms le gusta pillar de nix, y se olvida que los privilegios son de verdad
« Última modificación: 9 Febrero 2022, 04:20 am por .xAk. » En línea


MaX2

Desconectado Desconectado

Mensajes: 116


Ver Perfil
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #8 en: 9 Febrero 2022, 17:05 pm »

.xAk. no entiendo muy bien lo que quieres decir, pero con el codigo del amigo EdePC si se pueden mostrar sin problemas las palabras acentuadas.

EdePC también probé a cambiar el código

::%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::ASCII);"

por :

::%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::UTF8);"

y no funciona, no muestra los acentos

el problema lo veo si no tiene instalado el PowerShell


Salu2.
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.164



Ver Perfil
Re: Como leer un texto que hay en [Batch] con el Bloc de notas
« Respuesta #9 en: 10 Febrero 2022, 03:35 am »

PowerShell viene incluido por defecto desde Windows 7, las instrucciones que utilizas son de las clásicas así que no debería haber problemas.

Con respecto a que aún no te funciona, pues seguramente tu Batch no está guardado como UTF-8, usa un editor de texto/código decente como Notepad3, Notepad++ o SublimeText y asegúrate de guardar tu archivo con codificación UTF8 sin BOM

Si no quieres usar PowerShell, puedes usar Batch puro y duro:

Código
  1. Set "_ReadMe=%WinDir%\Temp\ReadMe.txt"
  2. Set "yo=%~f0"
  3. Del %_ReadMe% >NUL 2>&1
  4. Call :export txt "%_ReadMe%"
  5. Start notepad "%_ReadMe%"
  6. Exit /B
  7.  
  8. :export
  9. For /F "tokens=1 delims=:" %%a In ('FindStr /X /N ":%1:" %yo%') Do More %yo% +%%a > %2
  10. Exit /B
  11.  
  12. :txt:
  13. Aplicación
  14. Expañol
  15. Inglés
  16. Ñandú

La ventaja es que tomará la codificación de tu Batch sea cual sea: ANSI, UTF-8, etc y el archivo resultante también tendrá la misma codificación por lo que siempre debería mostrar las cosas tal cual se ven.
« Última modificación: 10 Febrero 2022, 03:37 am por EdePC » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines