2011-09-04 4 views
1

현재 par2 복구 파일을 좀 더 쉽게 만들려고합니다. 다음 스크립트는 모든 현재 폴더의 하위 폴더를 조사한 다음 해당 하위 폴더의 모든 파일에 대해 par2 복구 파일을 만듭니다.Windows 폴더를 사용하여 하위 폴더를 통해 재귀하는 동안 하위 폴더의 첫 번째 파일을 가져 오는 방법

FOR /R %%g IN (.) DO C:\WINDOWS\par2.exe c -r10 -s384000 "%%g\%%~ng.par2" "%%g\*" 
del /q *.par2 
pause 

하지만 지금은 하나의 문제는, 그것은 PAR2 파일의 파일 이름으로 폴더 이름을 사용하지만 "확장"이 파일에 대한 것 같은 스트립했다. 폴더 이름은 "ConcertFootage1.avi_"와 유사합니다. 그러면 해당 폴더에는 ConcertFootage1.avi.part01.rar 및 ConcertFootage1.avi.part02.rar 등과 같은 파일이 포함됩니다. 나는 "ConcertFootage1.par2"와 같은 par2 파일로 끝나야합니다. "ConcertFootage1.avi.par2"가 있어야 폴더의 파일을 정확하게 일치시킬 수 있습니다. 이 하지 난 그냥 파일의 이름을 얻기 위해 가장 좋은 것입니다 생각, 그래서 난 아직도 "ConcertFootage1.avi_.par2"와 끝까지하려는 폴더 이름에서 "확장"을 제거 것, 경우에도 지금

그 폴더를 "base"로 사용하면 ".partX.rar"파일 확장자를 제거 할 수 있다는 것을 의미합니다.

"FOR DO"명령에서이를 수행하는 방법을 알 수 없지만 아무도 도와 줄 수 있습니까?

답변

2

파일 이름에서 두 개의 확장명을 제거하려고합니다. 귀하의 질문을 이해합니다.

두 개의 %~nX 플래그로 설정할 수 있습니다.

setlocal EnableDelayedExpansion 
for /R %%g IN (.) DO (
    set "filename=%%~g" 
    call :removeExtension result1 "!filename!" 
    call :removeExtension result2 "!result1!" 
    echo !filename! -- !result1! -- !result2! 
) 
exit /b 

:removeExtension 
set "%~1=%~n2" 
exit /b 
+0

내 이름표를 단순화하기 위해 내 winrar 배치 스크립트를 변경 한 후,이 트릭, 감사 : D 조 – natli

관련 문제