2014-10-21 4 views
2

나는 약간의 연구를 수행했으며별로 발견하지 못했고 일을 할 수 없다는 것을 발견했습니다. 여기에 내가 stackoverflow에서 발견 한 한 가지가있다. cmd - batch file rename - Stack Overflow일괄 파일 이름 바꾸기 (타임 스탬프 제거)

큰 캐논 복사기를 사용하여 파일을 네트워크 드라이브의 폴더로 스캔합니다. 스캔하기 전에 파일의 이름을 지정하고 복사기가 "_20141021165008"과 같은 파일 끝에 타임 스탬프를 넣고 파일이 컴퓨터로 전송되면 타임 스탬프를 제거하고 싶습니다. 파일은 세 위치 중 하나로 스캔되고 각 위치에서 동일한 작업을 수행하고 싶습니다.

001-Bob_(1-100)_20141021165008 
002-Bob_(1-25)_20141021170515 
1-67676_Ex.Sheets_20141021172043 

이 내가 그들처럼하고 싶은 것입니다 :

001-Bob_(1-100) 
002-Bob_(1-25) 
1-67676_Ex.Sheets 

는 또한, 이름과 전화 번호가 모두 변경

는 복사기에서 나오는 모습입니다 시간. 파일 확장자가 보이지 않도록했습니다. 파일이 폴더에 도착하면

  • 유무 타임 스탬프가 자동으로 제거 :하지만 파일은 내가 뭘하고 싶은 것은 시간 .PDF

    의 99.9 %이다.

  • 파일 이름을 잃지 않도록 파일의 이름을 두 번 이상 변경하지 마십시오.

파일 이름의 마지막 12자를 제거하는 배치 파일이 있는데 바로 가기를 만들었고 키보드 단축키를 사용했지만 모든 기능이 작동하지 않고 완전히 자동화되지 않았습니다.

64X 도움이 사람에게 감사 Win7에 프로 실행 ... 그냥 작동이 중지 때문에 바로 가기마다 며칠을 재설정해야!

답변

2

거의 당신이 요구 한 것이 아닙니다. 명령은 이미 이름이 바뀐 파일의 이름을 변경할 위험없이 원하는만큼 여러 번 실행할 수 있습니다.

ren *_*.pdf *_.pdf 

위의 명령은 당신이 당신의 질문에 나열된 파일 다음과 같은 결과를 얻을 수 :

001-Bob_(1-100)_20141021165008.pdf --> 001-Bob_(1-100)_.pdf 
002-Bob_(1-25)_20141021170515.pdf  --> 002-Bob_(1-25)_.pdf 
1-67676_Ex.Sheets_20141021172043.pdf --> 1-67676_Ex.Sheets_.pdf 

이유는 위의 명령이 작동에 대한 설명은 How does the Windows RENAME command interpret wildcards?를 참조하십시오.

+0

여기서'ren'의 이러한 동작은 문서화되어 있습니까? –

+0

+1. 뉴스는 나에게 분명히 현재 명령 집합을 검토해야합니다. –

+0

@ Cheersandhth.-Alf - 업데이트 된 답변의 링크를 참조하십시오. 내가 아는 한, 그 행동은 MicroSoft가 제대로 문서화하지 못했습니다. 나는 그 행동을 리버스 엔지니어링하기 위해 많은 실험을했다. – dbenham

0
for /f "tokens=1-3* delims=_" %A in ('dir /b *_*_*.*') do ren "%A_%B_%C%D" "%A_%B%D" 

이렇게하면 dir 명령의 출력을 읽습니다. 두 개 이상의 밑줄이있는 파일에서는 작동하지 않습니다. 네가 필요하다면 그렇게 말하면 돼. 배치 파일에서 % A 등을 %% A로 변경하십시오.

0
@echo off 

setlocal 
set "target_folder=c:\some_dir" 
pushd "%target_folder%" 2>nul 

rem --Remove comments in case of network drive. 
rem net use h: %target_folder% 
rem pushd h: 

setlocal enableDelayedExpansion 
for %%a in (*_2014*) do (
    set filename=%%~na 
    set newname=!filename:~0,-14! 
    rem --Remove the echo if the new file name is OK 
    echo ren "%%~nxa" "!newname!%%~xa" 

) 
endlocal 
endlocal 
관련 문제