배치를 사용하여 문자열의 일부를 제거하여 텍스트 파일을 반복합니다.

배치를 사용하여 문자열의 일부를 제거하여 텍스트 파일을 반복합니다.

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,000줄이 있습니다.

답변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 정규식 텍스트 처리 유틸리티- XP 이상의 모든 Windows 시스템에서 기본적으로 실행되는 순수 스크립트 기반 유틸리티(하이브리드 JScript/배치)입니다.

명령줄에서:

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

배치 스크립트 내에서 명령을 사용하는 경우 CALL JREPL을 사용해야 합니다.

답변2

notepad++를 사용하여 파일을 열고 Alt 키를 누른 다음 마우스로 원하지 않는 텍스트의 "열"을 선택하십시오. Alt 키를 누르는 동안 열 모드가 유지됩니다. Alt 키를 놓고 del 키를 누릅니다. 모든 줄에 삭제할 문자 수가 동일한 경우 유효합니다.

답변3

다음 예와 같은 문자열 함수를 살펴보세요.

   모자에 str=teh 고양이를 설정하세요  
   echo.%str%
   설정 str=%str:teh=the%
   echo.%str%

C:\Users\My Computer\SkyDrive\기본적으로 공백으로 바꾸고 싶습니다 .

사용할 수 있는 문자열 함수 목록은 다음과 같습니다.http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString

관련 정보