Recorre el archivo de texto eliminando parte de la cadena usando lotes

Recorre el archivo de texto eliminando parte de la cadena usando lotes

¿Cómo puedo usar la línea de comando de Windows para hacer lo siguiente?

C:\Users\My Computer\SkyDrive\WORK ORDERS\Subdivision\Sec. 1\12345678_123 LUMINAIRE LN.pdf

becomes

WORK ORDERS\Subdivision\Sec. 1\12345678_123 LUMINAIRE LN.pdf

Estoy más familiarizado con Linux, para lo cual uso lo siguiente

cat wo.txt2 | grep "WORK\|pdf|" | sed 's/^.*WORK/WORK/' >> wo.txt

Hay alrededor de 17k líneas en mi archivo de texto.

Respuesta1

Usando lote puro:

@echo off
setlocal disableDelayeExpansion
set "input=wo.txt2"
set "output=wo.txt"
>"%output%" (
  for /f "delims=" %%A in ('findstr /n "^" "%input%"') do (
    set "ln=%%A"
    setlocal enableDelayedExpansion
    set "ln=!ln:*:=!"
    if defined ln set "ln=!ln:*WORK=WORK!"
    (echo(!ln!)
    endlocal
  )
)

Tenga en cuenta que la búsqueda de TRABAJO no distingue entre mayúsculas y minúsculas.

FINDSTR se utiliza para prefijar cada línea con el número de línea seguido de dos puntos, a fin de conservar las líneas en blanco.

La expansión retrasada se activa y desactiva dentro del bucle para preservar lo !que pueda existir en el archivo fuente.

Una solución mucho más sencilla es utilizar miUtilidad de procesamiento de texto con expresiones regulares JREPL.BAT- una utilidad basada puramente en scripts (JScript/batch híbrido) que se ejecuta de forma nativa en cualquier máquina con Windows desde XP en adelante.

Desde la línea de comando:

jrepl "^.*WORK" "WORK" /f "wo.txt2" /o "wo.txt"

Debe utilizar CALL JREPL si utiliza el comando dentro de un script por lotes.

Respuesta2

Utilice notepad++, abra el archivo, presione la tecla alt y seleccione las "columnas" de texto que no desea con el mouse. Mientras presionas la tecla alt, permaneces en modo columna. Suelta la tecla Alt y presiona Supr. Esto es válido si todas las líneas tienen la misma cantidad de caracteres para eliminar.

Respuesta3

Eche un vistazo a funciones de cadena como este ejemplo:

   set str=el gato con el sombrero  
   eco.%str%
   establecer str=%str:teh=el%
   eco.%str%

Básicamente deseas reemplazarlo C:\Users\My Computer\SkyDrive\con un espacio en blanco.

Aquí hay una lista de funciones de cadena que puede usar:http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString

información relacionada