2012-12-18 2 views
0

간단한 작업이라고 생각하지만 일괄 스크립팅에 대한 멍청한 말입니다. 내가 배치에 디렉토리에있는 모든 파일 디렉토리와 같은 이름의 이름을 변경 찾고 있어요파일의 이름을 해당 디렉토리의 이름으로 변경하십시오.

MAINDIR 
    directory name 
     nameof.file 

: 여기

처럼 구조가 모습입니다.

은 기본적으로는 다음과 같습니다

가 하위 폴더를 스캔하고 모든 *.file을 찾을 수 있습니다.

는 최종 결과가 directory name.file

더 구체적으로 할 nameof.file입니다

에 이미있는 디렉토리의 이름으로 *.file의 이름을 변경, 난 내가 이름을 변경해야 할 350 개 파일이 있습니다. 그들은 모두 적절한 디렉토리에 있고 각 폴더 안에있는 파일 중 하나에 파일 이름으로 폴더 이름을 넣기를 원합니다.

c:\folder 1\file1.ext 
c:\folder 2\file2.ext 
c:\folder 3\file3.ext 

모든 파일의 폴더 이름은 파일 이름이어야합니다.

c:\folder 1\folder 1.ext 
c:\folder 2\folder 2.ext 
c:\folder 3\folder 3.ext 

나는 그것이 더 명확하게되기를 바랍니다. 일단 스크립트가 준비되면 스크립트에 350 개의 파일과 하나씩 드래그 앤 드롭하여 파일을 가져 와서 이름을 바꿀 수 있습니다.

+0

동일한 확장명을 가진 파일이 여러 개있는 경우 어떤 동작을 원하십니까? – begemotv2718

+0

파일이 모두 동일하고 모두 동일한 확장자를 가지고 있으며 디렉토리 당 하나의 파일 만 있습니다. 스크립트 작성에 도움이된다면 파일은 .wad 확장자입니다. 그래서 디렉토리가 "Whatever_This_Name_Is"이면 파일은 NOW : FILE.wad이고, 스크립트 된 최종 결과는 Whatever_This_Name_Is.wad – VashTS

답변

0

이렇게하면 드래그 된 모든 파일의 이름이 상위 디렉토리 이름으로 바뀝니다. 당신은 당신이 끌어 개별적으로 모두를 삭제하는 것을 절약 할이

setlocal enabledelayedexpansion 
for /r C:\folder %%a in (*) do (
set p=%%~dpa 
set p=!p:~0,-1! 
for %%b in ("!p!") do ren "%%a" "%%~nb.*" 
) 

을 사용할 수 있습니다

setlocal enabledelayedexpansion 
for %%a in (%1) do (
set p=%%~dpa 
set p=!p:~0,-1! 
for %%b in ("!p!") do ren %%a "%%~nb.*" 
) 

는 고정 루트 디렉토리 아래의 모든 하위 폴더에있는 모든 파일을 통해 반복적으로이 작업을 수행합니다. 한 번에 하나씩 만 수행 할 수있는 경우가 아니면 첫 번째 솔루션으로 충분합니다.

+0

입니다. 응답을 보내 주셔서 감사합니다.하지만 드래그 앤 드롭 파일을 가져와야합니다. 나는이 일을 필요로 약 350 파일이 있습니다. 그게 가리키는 파일 만하면됩니다. – VashTS

+0

아 맞아, 니가 무슨 뜻인지 알 겠어, 나는 뭔가를 시도하고 생각할 것이다 :) –

+0

나는 드래그 앤 드롭을 할 나의 대답을 업데이트했다. –

관련 문제