1

Как я могу использовать командную строку 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 тыс. Строк

3 ответа3

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 regex - утилиты, основанной исключительно на сценариях (гибридный JScript/batch), которая работает на любом компьютере Windows начиная с XP и далее.

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

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

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

0

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

0

Посмотрите на строковые функции, как этот пример:

   set str=teh cat in teh hat  
   echo.%str%
   set str=%str:teh=the% 
   echo.%str%

В основном вы хотите заменить C:\Users\My Computer\SkyDrive\ пробелом.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .