Quitar comillas con un .bat

Quiero hacer un archivo.bat que tome un archivo .txt y que me quite todas las comillas (").

1 Respuesta

Respuesta
3

La nueva forma de trabajar de la página me ha permitido ver esta consulta.
Después de tanto tiempo imagino que ya no te interesa la posible respuesta pero si sigue interesándote dímelo.

No he obtenido ninguna respuesta a mi pregunta anterior por lo que deduzco que ya no te interesa el asunto. Pero voy a poner aquí mi solución por si puede servirle a alguien, aunque no sé si desde los buscadores se puede acceder a preguntas sin cerrar. Supongo que el archivo en el que se quieren eliminar todas las comillas se llama PRUEBA.TXT y está en la misma carpeta que el bat:

@echo off
Setlocal EnableDelayedExpansion
if exist kkk.txt del /q kkk.txt
echo.> temp.txt
for /f "skip=2 tokens=1*" %%x in ('fc /n temp.txt "prueba.txt" ^| findstr -v "*****"') do (
if "%%y" == "" echo.>> kkk.txt
if not "%%y" == "" (
set linea=%%y
set linea=!linea:"=!
if "!linea!" == "" echo.>> kkk.txt
if not "!linea!" == "" echo !linea!>> kkk.txt
)
)
copy /y kkk.txt prueba.txt

Parte del tratamiento que se hace en el bucle FOR es para respetar las líneas en blanco. Si no importa respetarlas se puede simplificar ese bucle (y prescindir del archivo temp.txt) y quedaría algo así:

@echo off
Setlocal EnableDelayedExpansion
if exist kkk.txt del /q kkk.txt
for /f "skip=2 tokens=1*" %%x in (prueba.txt) do (
set linea=%%x
set linea=!linea:"=!
if "!linea!" == "" echo.>> kkk.txt
if not "!linea!" == "" echo !linea!>> kkk.txt
)
copy /y kkk.txt prueba.txt

A petición de Esteban Parada (en los comentarios), resucito este antiguo hilo para incluir una modificación que permite hacer el tratamiento (eliminar las comillas) a toda una colección de archivos. Además he visto que la segunda versión (la que no respeta las lineas en blanco) arrastraba algunos errores (el skip=2, por ejemplo). Este es el código propuesto:

@echo off
Setlocal EnableDelayedExpansion
if "%~1"=="" goto :ayuda
for /f "tokens=1*" %%a in ('dir /b "%~1"') do call :borracomillas "%~p1%%a"
goto :eof
:borracomillas
if exist kkk.tmp del /q kkk.tmp
for /f "tokens=1* delims=" %%x in ('type "%~1"') do (
set linea=%%x
set linea=!linea:"=!
if "!linea!" == "" echo.>> kkk.tmp
if not "!linea!" == "" echo !linea!>> kkk.tmp
)
copy /y kkk.tmp "%~1" >nul
goto :eof
:Ayuda
Echo Hay que indicar el tipo de archivos a tratar, path incluido si procede
Echo Ejemplo:
Echo %0 "c:\Carpeta de prueba\*.txt"

Por comodidad he trabajado sobre la versión que no respeta las líneas en blanco. Si debe respetarlas solo habría que trasladar las modificaciones al otro código.

Esteban, dime si te funciona o no y si no te funciona concrétame en que consiste el mal funcionamiento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas