*********************************************@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處理中,前面的表示式是分割...