2013-12-11 39 views
0

這不工作..沒有錯誤。批量重命名最右邊的3個字符

有目錄:

123.abc 
123.def 
123.ghi 

要重命名爲:

abc 
def 
ghi 

我所做的工作不..

我用:http://www.dostips.com/DtTipsStringOperations.php Renaming Folder Structure in Batch

SETLOCAL ENABLEDELAYEDEXPANSION 
for /d %%D in ("C:\batch\*") do CALL :RENAME %%D %%~nxD 

:RENAME 
set "folder=%%~nxD" 
rem https://stackoverflow.com/questions/11040473/batch-file-string-character-split 
set "x=%folder:~-3%" 

FOR /D %%R IN (%1%) DO RENAME %%R "%x%" 
ENDLOCAL 
pause 

回答

1
@echo off 
    rem Prepare environment 
    setlocal enableextensions enabledelayedexpansion 

    rem For each directory under selected folder 
    for /d %%d in ("c:\batch\*") do (

     rem Get the extension of the directory if any 
     set "name=%%~xd" 

     rem If there is a extension 
     if defined name (

      rem Remove the dot from extension 
      set "name=!name:~1!" 

      rem If no file/folder exists with the new name, rename the dir 
      if not exist "%%~dpd\!name!" echo ren "%%~fd" "!name!" 
     ) 
    ) 

    endlocal 

最終重命名命令 「遙相呼應」 到控制檯。如果輸出正確,則從ren命令行中刪除echo

+0

使用文件擴展名非常光滑!我喜歡這個。請記住,要使用,刪除重命名行上的ECHO語句..謝謝! – Leptonator

1

這將在第一個時間段後將文件夾重命名爲文本。

刪除echo以激活該命令,因爲目前它只會將命令回送到控制檯。

@echo off 
for /f "tokens=1,* delims=." %%a in ('dir "C:\batch" /ad /b ') do echo REN "C:\batch\%%a.%%b" "%%b" 
pause 
+0

以上編輯的代碼 – foxidrive

+0

我編輯帖子時只顯示'%% a'沒有顯示整個文件夾:例如123.編輯它爲'%% a。%% b'來顯示123.abc,因爲這包括第一部分 - 採用基本文件夾名稱。 – Leptonator

+0

是的,感謝您收到該錯誤。 – foxidrive