[Batch] Conservar caracteres especiales usando delayedexpansion

Iniciado por ovichan, 25 Octubre 2012, 18:40 PM

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

ovichan

Buenas, en esta ocasion estoy haciendo un listado de unos archivos matroska, y usando el for con tokens, para seleccionar la parte a guardar en la lista. Al tener que usar enableddelayedexpasion, ciertos caracteres son destruidos. He intentado cambiar el chcp pero sin resultado. El codigo es este:

@echo off
Title Listar nombres capitulos
Setlocal EnableDelayedExpansion

rem CHCP 850 >nul
if exist "lista.txt" (erase "lista.txt")

for /f "tokens=2 delims=[]" %%i in ('dir /b /o:n "*.mkv"') do (

set "nom=%%i"

echo !nom:~1! >> "lista.txt"
)

pause


Lo curioso es que si lo ejecuto desde cmd, se muestra perfectamente con sus caracteres.

Original



Queda algo asi sin extenderme:


Eleкtro

#1
Creo que ya te expliqué los inconvenientes de habilitar la expansión en ocasiones como esta... No sigas usandolo para procesar nombres de archivos como estos... No lo digo por los caracteres latinos (Que eso es problema del código de páginas, no estás usando el adecuado), sinó por las exclamaciones "!" que son inseteables al expandir.

Código (dos) [Seleccionar]
@echo off
Title Listar nombres capitulos

REM Esto para el alfabeto latino
CHCP 1250 >nul

if exist "lista.txt" (erase "lista.txt")

for /f "tokens=2 delims=[]" %%i in ('dir /b /o:n "*.mkv"') do (

set "nom=%%i"

       REM Y esto para evitar la expansión y no perder otros caracteres.
CALL Echo %%nom:~1%%>>"lista.txt"
)

Pause&Exit


Saludos




EDITO: unas preguntas tontas Ovichan xD...
¿ese magnifico rip que ven mis ojos es tuyo?
Si conoces el ripeo de "Buiza" del foro AnimeHD, siendo sincero, ¿El tuyo tiene mejor calidad/tamaño? es que al ver "mkv" me asusta el tamaño.
¿Puedes decirme cuanto pesaría aprox. un capitulo de esos dejando solo el audio castellano?

-- ¿Está completado y posteado en evoshare ya?

PD: Vaya un offtopic xD








ovichan

Cita de: EleKtro H@cker en 25 Octubre 2012, 20:39 PM
Creo que ya te expliqué los inconvenientes de habilitar la expansión en ocasiones como esta... No sigas usandolo para procesar nombres de archivos como estos... No lo digo por los caracteres latinos (Que eso es problema del código de páginas, no estás usando el adecuado), sinó por las exclamaciones "!" que son inseteables al expandir.

Código (dos) [Seleccionar]
@echo off
Title Listar nombres capitulos

REM Esto para el alfabeto latino
CHCP 1250 >nul

if exist "lista.txt" (erase "lista.txt")

for /f "tokens=2 delims=[]" %%i in ('dir /b /o:n "*.mkv"') do (

set "nom=%%i"

       REM Y esto para evitar la expansión y no perder otros caracteres.
CALL Echo %%nom:~1%%>>"lista.txt"
)

Pause&Exit


Saludos




EDITO: unas preguntas tontas Ovichan xD...
¿ese magnifico rip que ven mis ojos es tuyo?
Si conoces el ripeo de "Buiza" del foro AnimeHD, siendo sincero, ¿El tuyo tiene mejor calidad/tamaño? es que al ver "mkv" me asusta el tamaño.
¿Puedes decirme cuanto pesaría aprox. un capitulo de esos dejando solo el audio castellano?

-- ¿Está completado y posteado en evoshare ya?

PD: Vaya un offtopic xD
Si ya se que me lo explicaste pero soy un poco cerril jajaja o es que no entiendo muy bien.

En cuanto al off, pues si este rip es mio. En cuanto al tamaño, no dudes que van a pesar pues uso la opcion de codificacion crf, que hace que sea indeterminable el tamaño del video pero asegura la mejor calidad. Pues para ser sinceros, a cada capitulo le adjunto archivos necesarios de recuperacion para una posterior edicion si fuese necesaria,por tanto eliminando este archivo mas el audio japo, creo que se quedaria cada capi en unos 350~400Mb.

Conozco a Ojisan de AnimeHD, pero nada mas lo siento.


AAAA y gracias por el codigo, lo voy a probar inmediatamente.

ovichan

Bueno como unico inconveniente es que el simbolo ¿ lo transforma a ?, pero bueno da igual me sirve. Gracias.

El call del echo no lo habia visto antes, y no tengo ni idea pa que sirve, lo de los dobles porcentajes ya me explicaste que era para obtener el valor de la variable local.

Gracias Elektro