배치 파일을 사용하여 파일 이름 끝에 텍스트를 추가하십시오 (그러나 확장자 전에) 1 version 1.txt File 2.txt

왼쪽에있는 형식의 파일 목록이 있습니다. 그림과 같이 각 파일 이름에 확장자 앞에 문자열을 추가하고 싶습니다 .

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

각 경우에 추가 된 문자열은 모든 파일에서 동일합니다.

이것은 간단한 작업처럼 보이지만 배치 파일에 넣는 데 문제가 있습니다.

ren명령을 시도 하고이 페이지 의 예제를 따르지 만 결과 파일 이름 은 확장자 뒤에 문자열 추가합니다 .

File 1.txt version 1.txt


답변

더 긴 파일 이름의 ?경우 질량이?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*

답변

의 문서화되지 않은 단점 에 의존하는 대신 , 이것이 올바른 방법으로 이루어지지 않는 이유는 무엇입니까?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

이것을 배치 파일에서 사용하려면 각 % 기호를 두 배로 늘리십시오.


답변

여러 파일에 “_A”를 추가하고 싶었습니다. 이것이 바로 그 방법입니다.

먼저 확장을 제거하고 접미사를 추가 한 다음 확장을 원래로 다시 변경했습니다. 프로그래머가 아니기 때문에 분명히 저에게 효과적이며 배치 코드를 단순하게 유지했습니다.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf

답변

나와 같은 명령에 익숙하지 않은 사람들을 위해 대량 이름 바꾸기를 매우 쉽게하는 몇 가지 소프트웨어가 있습니다.

  • 대량 이름 바꾸기 유틸리티 (오픈 소스 없음)
  • 이름을 바꾸십시오! (오픈 소스)

답변

@bwDraco의 솔루션은 훌륭했지만 더 단순하게 유지되었을 수 있습니다. 내 파일 세트는 모두 * .jpg이며 모두 * c.jpg로 이름을 바꾸고 싶었습니다. 3 단계가 아닌 2 단계 만 필요합니다.

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg

답변

하위 폴더를 통해 재귀 적으로

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done