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