Windows批處理修改檔名

2022-04-30 17:12:22 字數 1016 閱讀 2953

*********************************************

@echo

offsetlocal

set /p oldname=請輸入老名字:

set /p newname=請輸入新名字:

set /p wildcard=請輸入檔名萬用字元列表(預設為所有檔案,即「*」):

for /f "usebackq delims=" %%i in (`dir /s/b/a-d %wildcard%`) do (

setlocal enabledelayedexpansion

set var=%%~nxi

set "var=!var:%oldname%=%newname%!"

ifnot "%%~nxi"=="!var!" (echo 正在改名:"%%i" =》 "!var!")

echo %%i |find "mutiren.bat" >nul || ren "%%i" "!var!" >nul

endlocal

)endlocal

*********************************************

說明 :

1. 本處理的功能是查詢替換檔名。

2. 在for語句中使用到了變數延遲的語句 setlocal  enabledelayedexpansion 和 endlocal。

3. dir /s /b /a-d 是列出當前目錄及其子目錄(/s)的檔案(/a-d)的名稱(/b),/a-d是指檔案屬性非目錄,即檔案。

4. '|'是用來傳遞引數的管道,'||'則是當前面的句子執行失敗後才能執行的。

5. >nul,成功的不提示。

6. multiren.bat為本批處理的檔名,不會修改的。

7. 增加了輸入檔名萬用字元過濾,例如"*.c *.h"(輸入不包括雙引號)。

8. 開頭的setlocal是將變數作用域限制在區域性,以防修改外部全域性變數混淆。

**

批處理匯出日期檔名

問題的提出 在批處理檔案的時候往往需要儲存處理結果,為了更好的管理這些日誌檔案,最好的辦法就是以日期為檔名的形式存放這些日誌。解決方案 bat 命令中有time 和date 兩個內建變數可以提供我們運用,但是日期和時間中有非法檔名字元存在,因此 0,4可以派上用場,在bat處理中,前面的表示式是分割...

批處理 檔名操作

使用revit批量匯出cad或pdf的時候檔名總會帶一些字首,用批處理寫了乙個小指令碼去對檔名進行操作,可以實現批量去除字首,新增字首,字串替換。以下核心 rem 新增字首 cmdaddprefix echo 要處理的檔案型別 rem 取得輸入的檔案型別 set p type echo 新增的字首 ...

批處理匯出日期檔名

問題的提出 在批處理檔案的時候往往需要儲存處理結果,為了更好的管理這些日誌檔案,最好的辦法就是以日期為檔名的形式存放這些日誌。解決方案 bat 命令中有time 和date 兩個內建變數可以提供我們運用,但是日期和時間中有非法檔名字元存在,因此 0,4可以派上用場,在bat處理中,前面的表示式是分割...