Ms-Dos - Reemplazar "|" por espacios utilizando script .bat

 
Vista:
sin imagen de perfil
Val: 1
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Reemplazar "|" por espacios utilizando script .bat

Publicado por Angel (1 intervención) el 21/09/2017 07:02:03
Hola a todos un saludo, espero puedan ayudarme.

Necesito reemplazar ciertos caracteres en un archivo de texto, para ello estoy utilizando el script que designe como "mi_script.bat", el cual contiene dentro de si las siguientes sentencias:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
Setlocal EnableDelayedExpansion
if "%3" == "" goto ayuda
set cadorig=%1
set cadorig=%cadorig:"=%
set cadsust=%2
set cadsust=%cadsust:"=%
for %%f in (%3) do (call :cambiar %%f)
goto fin
:cambiar
set archivo=%1
for /f "tokens=* delims=" %%i in (%archivo%) do (set ANT=%%i&echo !ANT:%cadorig%=%cadsust%! >>kk_temp.txt)
copy /y kk_temp.txt %archivo%
del /q kk_temp.txt
goto :EOF
:Ayuda
Echo Reemplaza una cadena por otra en el contenido de archivos (con comodines)
echo Utiliza un archivo temporal kk_temp.txt que no debe existir previamente
echo Formato: %0 cadorig cadsust archivos
echo Si las cadenas contienen espacios deben escribirse entrecomilladas
echo No funciona si la cadena original contiene un "="
Echo Ejemplo:
echo %0 de DE *.txt
:Fin


ejecuto mi script mediante la siguiente sentencia:
replace_char.bat " " "/" prueba.txt

donde " " es el caracter buscado, y "/" es el caracter que reemplazara a " ". Esto funciona de maravilla, el problema es cuando intento reemplazar pipes por espacios mediante la sentencia:

replace_char.bat "|" " " prueba.txt.

Al ejecutar esta utltima instrucción, el resultado esperado es que reemplace todos los | por espacios. sin embargo no lo hace.

Alguna idea???
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Reemplazar "|" por espacios utilizando script .bat

Publicado por Antoni Masana (811 intervenciones) el 22/09/2017 09:32:51
Es un problema casi insoluble tratar de usar caracteres especiales tales como / \ | < > , ; espacio y tabulador para ciertas cosas en los BAT.

Para ver que pasa en el BAT y saber que falla cambia la primera linea por un @echo on y ejecuta lo siguiente

1
replace_char.bat "|" " " prueba.txt. >Trace.txt 2>&1

Esto hará que guarde en Trace.txt todas la líneas del BAT mientras las ejecuta e incluso los mensajes de error.
Ten en cuenta que lo que veas y lo que hace puede no ser interpretado de la misma forma por ejemplo podrás ver esto

1
set cadorig=|

y pensadas lo está haciendo bien que hace asigna carácter a variable

pero te equivocas, él interpreta {comando} pipa {comando} el primer comando es set cadorig= y el segundo nulo

Te puedo dar dos alternativas, una es hacerlo en VBScript y la otra que utilizo es el comando AWK de unix para MS-DOS.

Es un intérprete de comandos con una sintaxis propia parecida al lenguaje C. Cuando lo conoces puedes resolver muchos problemas que MS-DOS no te deja.

La primera opción es nativa de Microsoft y la segunda es un programa de terceros.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar