2015-02-05 4 views
0

rojo 덕분에 아래의 배치 파일은 잘못된 문자를 확인하고 대시로 바꾸고 하위 디렉토리를 검색하고 위치 인수가 필요하지만 실행시 지정한 디렉토리로 이동합니다 논쟁 거리. 배치 파일이 실행되는 드라이브/폴더에 있어야합니다. (예는 : rename.bat C는 : \ 테스트,이 C로 이동합니다 : \ 테스트를 배치 파일이 실행 된 후)배치 파일이 인수로 위치로 이동합니다

@@echo off 
IF "%~1"=="" goto Continue 
pushd %1 
setlocal enabledelayedexpansion 

for /r %%I in (*) do (
    set "file=%%~nxI" 
    if "!file:~0,1!"=="~" (
     set "file=-!file:~1!" 
    ) 
    for %%d in (# %%) do (
     if not "!file!"=="!file:%%d=!" (
      set "file=!file:%%d=-!" 
     ) 
    ) 
    if not "!file!"=="%%~nxI" (
     echo %%~fI -^> !file! 
     ren "%%~fI" "!file!" 
    ) 
) 
Exit /B 
:Continue 
@echo You need drive and directory at end or this batch file 

답변

1

당신의 FOR /R 루프의 끝에서, 디렉토리 변경 수행 "취소"를 POPD를 추가 해당 PUSHD 명령으로

setlocal enabledelayedexpansion 
pushd %1 

for /r %%I in (*) do (
... 
) 

REM Revert back to the original directory. 
POPD 
ENDLOCAL 

Exit /B 
:Continue 
+0

나는 POPD를 추가하려고했지만 아무런 영향이 없었습니다. – cwhitmore

+0

@cwhitmore - 구조체를 약간 조정하여'PUSHD' 명령이'SETLOCAL' 이후에 나옵니다. 또한 각각의 'ENDLOCAL'을 추가했습니다. –

+0

Jason - 근무했습니다. 고마워. – cwhitmore

관련 문제