2015-02-05 53 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 2015-02-05 19:56:07

+0

@cwhitmore - 我調整了一下結構,所以'PUSHD'命令在'SETLOCAL'之後。另外,我添加了各自的'ENDLOCAL'。 – 2015-02-05 20:14:38

+0

傑森 - 工作。謝啦。 – cwhitmore 2015-02-06 21:52:43