Windows 8.1에서 파일 배치에 대한 파일 이름의 일부를 어떻게 삭제합니까?

Windows 8.1에서 파일 배치에 대한 파일 이름의 일부를 어떻게 삭제합니까?

폴더에 많은 파일이 있지만 모두 숫자 줄로 시작하고 "_"로 실제 파일 이름과 구분됩니다.

예를 들어:

123123123_파일명.txt

456456456_filename2.txt

789789789_파일 이름3.txt

" _ " 앞의 문자와 "_" 자체를 제거하도록 일종의 명령을 실행할 수 있다고 생각합니다.

어떤 도움이라도 대단히 감사하겠습니다!

답변1

PowerShell이 ​​익숙하지 않은 경우 다음과 같은 무료 유틸리티를 살펴보는 것이 좋습니다. http://www.bulkrenameutility.co.uk/Download.php

답변2

목록의 문자를 제거하려는 경우 해당 디렉토리 대신 배치 파일에 다음을 넣을 수 있습니다.dirname

for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G

dir /b기본 형식의 디렉토리 목록(제목 정보나 요약 없음)을 생성합니다. 는 delims=_밑줄을 구분 기호로 사용해야 함을 나타내고 은 tokens=2밑줄 뒤에 오는 내용을 원한다는 것을 나타냅니다. 보다FOR/FFOR /F배치 파일에서 사용하는 방법에 대한 자세한 설명은

그러나 숫자와 밑줄 없이 파일 이름을 바꾸려는 경우 예제에는 filename2.txt숫자와 밑줄을 제거하면 이름을 생성하는 두 개의 파일이 있습니다. 그런 경우에는 어떻게 하길 원하시나요? 아니면 세 번째 파일에 filename3.txt를 사용하려고 했나요?

밑줄 뒤에 오는 이름이 고유한 이름인 경우 다음을 사용하여 파일 이름을 바꿀 수 있습니다.관련 디렉토리:

set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H

위의 경우 첫 번째 토큰인 은 %%G밑줄 앞에 있는 것이고 두 번째 토큰은 %%H밑줄 뒤에 있는 것입니다. 이름 바꾸기 명령이 구문을 사용하기 때문에 이름 바꾸기 작업을 위해 이를 다시 모아서 디렉터리 앞에 붙였습니다 RENAME [drive:][path]filename1 filename2.

각 이름 바꾸기 작업이 발생할 때 확인하지 않으려면 명령 @echo off앞에 배치 파일의 첫 번째 줄을 입력합니다 .set

답변3

powershell    
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}

Win8에서는 powershell을 사용하는 것이 좋습니다.

답변4

PowerShell: 폴더의 모든 파일 이름을 바꿔야 한다고 가정합니다(OP에서 알 수 있듯이).

$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }

관련 정보