1 votos

Insertar salto de línea/carácter especial en la cadena del archivo

Tengo el archivo USER.TXT. El archivo contiene texto:

123,234,987,877,356

Busco script para modificar el texto del mismo archivo a:

123
234
987
877
356

Por favor, ayúdame a editar un archivo de texto sin redirigir la salida a un nuevo archivo.

Hasta ahora lo he hecho:

@echo off 
setlocal enableextensions disabledelayedexpansion

set "search=%,"
set "replace=%%"

set "textFile=USERS.txt"

for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    >>"%textFile%" echo(!line:%search%=%replace%!
    endlocal
)

¡¡Gracias por toda la ayuda!!

0 votos

No funcionó. Aquí está la salida que estoy recibiendo:

0 votos

Ver Aceptar una respuesta para asegurarse de que entiende cómo funciona la solución que encuentra para cualquier respuesta que le ayude a resolver su problema, simplemente marque la pequeña casilla de verificación gris en la parte superior izquierda de la respuesta que resuelve su problema, suponiendo que lo haga, y póngala en verde para mostrar que es la respuesta que aceptó, ya que así es como se supone que funciona; usted hace una pregunta, obtiene respuestas, y si obtiene una respuesta que funciona para sus necesidades, simplemente acepta esa respuesta.

1voto

PJ Mahoney Puntos 889

Lote script para sustituir la coma por CRLF

Si esto es lote suficiente para ti, dale una oportunidad ya que parece ser simple y simplemente funciona .

El siguiente lote script esencialmente:

  • Utilice Get-Content y Sustituir para la cadena a buscar ( , ) y reemplazar ( CRLF )
  • Entonces utilizará Set-Content para poner la cadena recién reemplazado en el archivo como corresponde

Nota: El set textFile= debe ser la ruta explícita completa del archivo de texto al que se le cambiarán las comas CRLF (por ejemplo C\Folder\Path\USERS.txt ), o bien si este script se encuentra exactamente en la misma carpeta que ese archivo, el valor de la opción set textFile= debe llevar el prefijo %~dp0 (por ejemplo %~dp0USERS.txt )

@echo on

set search=,
set textFile=C:\Folder\Path\USERS.txt
::set textFile=%~dp0USERS.txt

:PowerShell
SET PSScript=%temp%\~tmpStrRplc.ps1
ECHO (Get-Content "%textFile%").replace("%search%", "`r`n") ^| Set-Content "%textFile%">"%PSScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
EXIT

Contenido del archivo original

123,234,987,877,356

Contenido del archivo de resultados

123
234
987
877
356

Más recursos

0 votos

No funcionó . Obteniendo un error en la salida:Get-Content : No se puede encontrar la ruta ' C:\Windows\System32\WindowsPowerShell\v1.0\Users.txt ' porque no existe

0 votos

@GeorgeDudnikov Acabo de editar mi respuesta con una corrección para resolver eso. Utilicé la ruta explícita completa en mis pruebas pero añadí un Nota con dos soluciones que deberían funcionar para usted dependiendo de su configuración.

0 votos

¡Muchas gracias! Excelente resolución!!!. eres el Mejor!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: