Цикл по текстовому файлу, удаляющий часть строки с помощью пакетной обработки

Цикл по текстовому файлу, удаляющий часть строки с помощью пакетной обработки

Как использовать командную строку Windows для выполнения следующих действий?

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

Я больше знаком с Linux, для которого я использую следующее

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

В моем текстовом файле около 17 тыс. строк.

решение1

Используя чистую партию:

@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
  )
)

Обратите внимание, что поиск по слову WORK нечувствителен к регистру.

FINDSTR используется для добавления к каждой строке номера строки, за которым следует двоеточие, чтобы сохранить пустые строки.

Отложенное расширение включается и выключается в цикле, чтобы сохранить все, !что может существовать в исходном файле.

Гораздо более простое решение — использовать мойJREPL.BAT утилита обработки регулярных выражений текста- утилита, основанная исключительно на скриптах (гибрид JScript/пакетная обработка), которая изначально работает на любой машине Windows, начиная с XP.

Из командной строки:

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

Если вы используете команду в пакетном скрипте, необходимо использовать CALL JREPL.

решение2

Используйте notepad++, откройте файл, нажмите клавишу alt и выберите мышью "столбцы" текста, которые вам не нужны. Пока вы нажимаете клавишу alt, вы остаетесь в режиме столбцов. Отпустите клавишу alt и нажмите del. Это справедливо, если все строки имеют одинаковое количество символов для удаления.

решение3

Взгляните на строковые функции, подобные этому примеру:

   set str=кот в шляпе  
   эхо.%стр%
   установить стр=%стр:тех=%
   эхо.%стр%

По сути, вам нужно заменить его C:\Users\My Computer\SkyDrive\на пустое место.

Вот список строковых функций, которые вы можете использовать:http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString

Связанный контент