[批處理]批量將文件名更名為其上級目錄名


前言

今天從網上下載了點ASP.NET的視頻,但是由於是免費的,所以有很多垃圾信息

更討厭的是,每個文件名也都有非常長的一大長串垃圾廣告,需要批量刪除這些文件名中的廣告字符串

如圖:

目的

要做一個程序來批量修改文件名,將一個文件夾下所有的文件的文件名,修改為其上級目錄的名字

注意不是修改更名為同一級目錄名,而把自己的名字更名為自己所在的上一級目錄的名字

如上圖,目的是把每個視頻文件改名為其所在目錄名

使用方法

把要執行的包含所有文件的總文件夾拖動到bat中,會顯示執行效果,如果確認則真正執行



處理完成后效果圖:

所有文件都更名為其上級目錄名



注意

1,當文件夾內有多個文件,且擴展名相同,則會發生文件名沖突錯誤,會導致從當前文件夾內從第二文件起之后的文件都不更名

請自行編輯文件過濾信息,以保證每個文件夾下被更名文件都是唯一的

2,當文件名中含有特殊字符時。如! 或&符號等會導致更名失敗,可以先執行以下命令

for /f "delims=" %i in ('dir /s /b /a:-d 【要處理文件的目錄】\*.*') do @ren "%i" "a%~xi"

先把所有文件的文件名都更名為任意字符,然后再批量修改即可

 

批處理代碼,保存至bat文件中運行即可:

@echo off
:start
setlocal enabledelayedexpansion
set isrun=n

echo 請把包含要處理的文件的[文件夾]拖動到此處,回車確定
set dir=n&set /p dir=
if "%dir:"=%"=="n" cls&goto start
cls&echo ====================================
:run
for /f "delims=" %%i in ('dir /s /b /a:-d %dir%\*.*') do (
    set full=%%~dpnxi
    set exten=%%~xi
    set path=%%~dpi
    set path=!path:~0,-1!
    for /f "delims=" %%j in ("!path!") do set path=%%~nj
    if /i "!isrun!"=="n" (
        echo ren "!full!" "!path!!exten!"
    ) else (
        ren "!full!" "!path!!exten!"
        echo 更名為:"!path!!exten!"
    )   
)
echo ====================================
if /i "%isrun%"=="n" (
    echo 即將執行以上操作,是否執行[Y/N]
    set isrun=n&set /p isrun=
    if /i "!isrun!"=="y" ( goto run ) else ( cls&goto start )
) else (
    echo.&echo 更名完成!
    echo 任意鍵返回&pause>nul&cls&goto start   
)
View Code

——原文發表於2012-7-24 12:26


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM