Necesito un script para convertir un conjunto de TXT-ANSI a TXT UTF-8!

Iniciado por cron0ar8R, 15 Junio 2013, 19:13 PM

0 Miembros y 1 Visitante están viendo este tema.

cron0ar8R

Hola a todos,

Alguien sabría como crear un script que me convierta un conjunto de archivos de texto en ANSI a UTF-8? No hay que hacer nada más, solo cambiar la codificación.

veréis, tengo unos archivos m3u en formato ansi y necesito pasarlos a utf-8 para que me funcionen en un teléfono chino que no acepta caracteres ansi.

lo que pasa es que cada vez que sincronizo el teléfono tengo que re-codificar a utf-8 para que me funcionen las listas. notepad++ puede hacer la conversión de ansi a utf8 pero tengo que hacerlo uno a uno, por eso prefiero un script.

la idea seria copiar el script dentro de la carpeta donde están todas las listas de reproducción con extensión m3u y luego ejecuto el script y me las pasa todas al formato correcto.

alguien sabe como hacerlo? imagino que solo es una o dos lineas de código pero yo no domino este campo...


Gracias y un saludo

Eleкtro









cron0ar8R

gracias por responder elektro!
pues me da igual el lenguaje, solo quiero ejecutarlo desde windows... imagino que eso será un .bat que se puede editar con el notepad  :P

Eleкtro

#3
Cita de: cron0sS6AR en 15 Junio 2013, 20:00 PMimagino que eso será un .bat que se puede editar con el notepad  :P
Pues no amigo, en Batch podrías hacerlo a utf-16, pero a utf-8 no.

Por eso la pregunta, ¿de que lenguajes de scripting dispones instalados en tu máquina? xD, en python y ruby es muy fácil.

En VBS sería así:

Código (vb) [Seleccionar]
Set stream = CreateObject("ADODB.Stream")

With stream
.Open
.Type     = 2
.Position = 0
.Charset  = "utf-8"
.WriteText CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll
.SaveToFile WScript.Arguments(1), 2
.Close
End With

Wscript.Quit(0)


Lo he codeado para que puedas pasarle argumentos, de esta manera:
Código (vb) [Seleccionar]
Script.vbs "Archivo ANSI.txt" "Nuevo archivo UTF-8.txt"

Puedes hacer un For en Batch para recorrer todos los archivos de texto:
Código (dos) [Seleccionar]
For %%X in ("*.txt") Do (Script.vbs "%%X" "UTF-8 %%X")

...O puedes usar aplicaciones commandline para convertir entre las distintas codificaciones de texto, como por ejemplo "iconv", o "stringconverter", y usar el FOR que te he mostrado pero con la aplicación que vayas a usar.

Saludos.








cron0ar8R

Hola de nuevo Elektro, gracias por el código.

A ver, no estoy muy documentado que digamos xD

No tengo ningún compilador instalado en mi maquina más allá del de java.

Desconozco si puedo ejecutar ese código directamente o no, no soy programador, solo sé algo de C y hace años que lo toco.

Lo que yo tengo son un conjunto de archivos con extensión .m3u cada uno con un nombre "cualquiera". Entonces, solo quiero un script o aplicativo que me recorra todos los archivos .m3u y que me los guarde con la codificación UTF-8.

Entonces, este código que me has pasado es un script de visual basic, no? entiendo que no necesito instalarme ningún compilador entonces. Dicho esto, qué hago? lo copio en el notepad y lo guardo con extensión .vbs? y el otro código lo guardo como .bat? está listo para ejecutar? o tengo que hacer algo extra?

Creo que en mi caso sería así, no?

  For %%X in ("*.m3u") Do (Script.vbs "%%X" "UTF-8 %%X")

Igualmente, voy a probar a ver si funciona...

perdón por preguntar chorradas pero es que no soy del ramo... :D

Un saludo!

cron0ar8R

#5
Hola de nuevo,

Acabo de probar sin éxito el código. Creo que algo hago mal...

lo que he hecho es crear dos archivos. Uno .vbs y otro .bat.

El .vbs he copiado "a saco" esto:

Set stream = CreateObject("ADODB.Stream")
   
With stream
   .Open
   .Type     = 2
   .Position = 0
   .Charset  = "utf-8"
   .WriteText CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll
   .SaveToFile WScript.Arguments(1), 2
   .Close
End With
   
Wscript.Quit(0)



Y en el .bat he copiado esto:
For %%X in ("*.m3u") Do (Script.vbs "%%X" "UTF-8 %%X")

Entonces, he copiado los dos archivos en la carpeta de las playlist. En esa carpeta solo hay 14 archivos .m3u. Después del proceso, según notepad++, continúan siendo ANSI.


A ver si me puedes echar otro cable campeón! xD  ;D

Gracias y un saludo

cron0ar8R

perdón por preguntar chorradas pero es necesario que instale algún compilador para que me funcione? o simplemente lo guardo con extensión .vbs y lo ejecuto? es que he hecho eso y no me va. Creo que hago algo mal, a ver si alguien me puede echar una manita  :D

gracias otra vez



Eleкtro

Cita de: cron0sS6AR en 17 Junio 2013, 17:25 PMDespués del proceso, según notepad++, continúan siendo ANSI.
¿Y que te dice el Notepad de toda la vida?

Verifiqué que el código era correcto, convierte archivos ANSI a UTF-8.

No existe compilador para VBS, lo estás ejecutando corréctamente.

Prueba a llamarlo diréctamente desde la CMD:
wscript.exe "Script.vbs" "archivo ansi.txt" "nuevo archivo UTF-8.txt"

...Y comprueba la codificación del nuevo archivo.

Saludos!








cron0ar8R

#8
gracias por responder electro. Al intentar ejecutarlo desde el cmd me sale esto:

---------------------------
Windows Script Host
---------------------------
No existe ningún motor de secuencia de comandos para la extensión de archivo ".vbs".

---------------------------
Aceptar  
---------------------------





he ejecutado exactamente el mismo código que me has puesto sin cambiar nada. o sea,

wscript.exe "Script.vbs" "archivo ansi.txt" "nuevo archivo UTF-8.txt"




[MOD:] No hagas doble post en 60 segundos :-/

Eleкtro

Cita de: cron0sS6AR en 20 Junio 2013, 16:22 PMgracias por responder electro. Al intentar ejecutarlo desde el cmd me sale esto:
hmmm...

La verdad es que no encuentro información al respecto sobre ese extraño error.

¿Usas un Windows modificado? (Lease Windows SuperLite, etc)

En lugar de usar "wscript.exe" en el código que te dije, prueba con "cscript.exe", ¿Te funciona?.

Me parece que algo falla en tu WScript, prueba a repararlo con estos tres comandos diréctamente en la CMD:

regsvr32 VBScript
assoc .vbs=VBSFile
Ftype VBSFile="%SystemRoot%\System32\WScript.exe" "%1" %*