Cita de: ovichan en 4 Agosto 2012, 15:42 PMEl problema es que "For" no procesa las lineas en blanco de un archivo, Pero bueno por suerte, Como son solo números, Con esto queda arreglado:
El código que has puesto funciona pero se come el espacio antes de los numeros de la línea
Código (dos) [Seleccionar]
@echo off
for /f "tokens=*" %%X in ('type "%userprofile%\Desktop\1.srt"') do (
set /A "linea=%%X" 2>NUL && Echo+ >>"%userprofile%\Desktop\Cap 01 B mod.srt"|| (set "linea=%%X")
Call :Replace
Call Echo %%Linea_final%% >> "%userprofile%\Desktop\Cap 01 B mod.srt"
)
pause
Exit
:Replace
set "linea=%linea:. . .=...%"
set "linea=%linea:>=^>%"
set "linea=%linea:)=^)%"
Set "Linea_final=%LINEA%"
Goto:EOF
Cita de: ovichan en 4 Agosto 2012, 15:42 PMmis srt están codificados en Unicode, podría automatizar el cambio a UTF-8??No.
Aunque puedes usar el comando type:
Código (dos) [Seleccionar]
Type archivo.srt > archivoNUEVO.srt
El cual automáticamente codifica en formato ANSI, Pero para convertirlo a UTF-8 no hay manera de hacerlo en Batch.
EDITO: Bueno en realidad, Batch por defecto guarda todo lo redireccionado en codificación ANSI...
¿Porque quieres que estén en formato utf-8? (UTF También es Unicode)
Bueno, Necesitas usar alguna herramienta de terceros por linea de comandos (Alguna hay, pero no recuerdo el nombre).
O adaptar este VBS para llamarlo desde Batch usando argumentos:
Cita de: GOOGLECódigo (vb) [Seleccionar]Option Explicit
Sub Save2File (sText, sFile)
Dim oStream
Set oStream = CreateObject("ADODB.Stream")
With oStream
.Open
.CharSet = "utf-8"
.WriteText sText
.SaveToFile sFile, 2
End With
Set oStream = Nothing
End Sub
' Example usage: '
Save2File "The data I want in utf-8", "test.txt"
Salu2