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