방법 배치 정규식을 사용하여 Windows PowerShell의 파일 이름의 일부를 이름 바꾸기?

이 예에서, 우리는이 6 날짜와 아래 파일 이름 아래의 파일:

모드 LastWriteTime 길이 이름
----                -------------         ------ ----
-에이----       10/06/2018     12:40              0 1 = 9.8.16 은행 문 298.67.pdf
-에이----       10/06/2018     12:40              0 2 = 9.9.16 은행 문 134.74.pdf
-에이----       10/06/2018     12:41              0 3 = 9.10.16 은행 문 123.43.pdf
-에이----       10/06/2018     12:41              0 4 = 9.11.16 은행 문 134.54.pdf
-에이----       10/06/2018     12:41              0 5 = 9.12.16 은행 문 157.98.pdf
-에이----       10/06/2018     12:41              0 6 = 9.1.17 은행 문 123.45.pdf

이리, 파일 이름은 직렬을 포함 # 처음에, = 뒤에, '은행 문 다음에’ 문 균형의 말에 따라.

이 파일은 실제로 신용 카드 명세서 단어 '은행에’ 단어 '신용 카드'로 교체해야합니다. 파일 이름의 모든 나머지는 동일하게 유지한다.

이를 달성하기 위해서, 우리가 사용하는 것 윈도우 PowerShell을 정규식.

모든 은행 문을 나열하려면, 우리는을 사용하여 ls 명령, 출력 후, 파이프

LS | REN -newname {$_.name -replace('(.+)은행(.+)','$ 1Credit 카드 $ 2')}

이름 바꾸기 명령은 파일의 이름을 변경 파이프 후 사용. $_ 파이프 전에 출력을 유지하는 목적은, 우리는의 이름 속성을 사용하는 $_ 목적. -replace 문자열에 사용된다 PowerShell을, 이는 새로운 문자열로 문자열을 대체. -replace 취하는 함수이다 2 매개 변수. 제 1 회 매개 변수는 우리가 바꿀 된 문자열이고 두 번째 매개 변수는 새 문자열.

정규식에서 그룹을 캡처 우리는 문자열의 일부를 계속 허용. 정규식, 괄호에 넣어 아무것도 나중에 사용하는 캡처. 예를 들어,. (.+)Bank(.+) 이전과 문자 '은행'이후에 아무것도 캡처. 우리는이 캡처 된 부품을 사용할 수 있습니다, 사용하여 $ 및 수. 제 1 회 괄호로 캡처 $1 그리고 두번째 괄호로 캡처 $2 기타…

첫 번째 매개 변수에, 우리는 우리가 바꿀 된 문자열을 지정, 동시에 우리는 우리가 유지하려는 문자열의 일부를 캡처 (포착). 두 번째 매개 변수에, 새 문자열은 우리가 유지하려는 캡처 된 부품을 사용, 뿐만 아니라 새로운 캐릭터 자체 예. '$1Credit Card$2'.

결과:

모드 LastWrite 시간 길이 이름
----       ---------      ----            ------   ----
-에이----     10/06/2018     12:40              0 1 = 9.8.16 신용 카드 명세서의 298.67.pdf
-에이----     10/06/2018     12:40              0 2 = 9.9.16 신용 카드 명세서의 134.74.pdf
-에이----     10/06/2018     12:41              0 3 = 9.10.16 신용 카드 계산서 123.43.pdf의 -a ----     10/06/2018     12:41              0 4 = 9.11.16 신용 카드 계산서 134.54.pdf의 -a ----     10/06/2018     12:41              0 5 = 9.12.16 신용 카드 계산서 157.98.pdf의 -a ----     10/06/2018     12:41              0 6 = 9.1.17 신용 카드 명세서의 123.45.pdf

회신을 남겨주