2、用for命令來讀取那個由dir命令生成的列表檔案 a、在迴圈的過程中取得上級資料夾名 b、取得檔名 c、ren "原始檔名" "上級資料夾名檔名" 上面就是虛擬碼,接下來是批處理的實現程式碼@echo offrem 生成臨時列表檔案 dir d:\*.txt /s /a-d /btmp.txt rem 用for命令來讀取那個由dir命令生成的列表檔案 FOR /F "tokens=*" %%a IN ( "more tmp.txt") DO (rem 用Setlocal來啟用環境變數延遲功能 Setlocal EnableDelayedExpansion rem 取得路徑包括了最後一個斜線\ set tempPath=%%~dpa rem 把路徑中的最後一個斜線去掉 set tempPath=!tempPath:~,-1! rem 在for命令中來擴充套件取得路徑名 FOR %%A IN ( "!tempPath!") DO (rem 擴充套件取得上級目錄名 set filePath=%%~nA rem 新的檔名為: 上級目錄名檔名 set new_name=!filePath!%%~nxa rem 重新命名檔名(為了安全,這裡只是用echo把命名的 rem 語句顯示出來) rem 如果要進行重新命名的話,把echo 去掉就可以了 echo ren "%%a" "!new_name!")ENDLOCAL)rem 刪除臨時檔案
我們知道在批處理中要批次處理的話,那肯定是少不了用for命令的。 現在我們把他的要求分解成兩部分
1、先用dir命令把所有要進行重新命名的檔案的全路徑列出來傳送到一個臨時的文字檔案。 (供下面的for語句來讀取)
2、用for命令來讀取那個由dir命令生成的列表檔案 a、在迴圈的過程中取得上級資料夾名 b、取得檔名 c、ren "原始檔名" "上級資料夾名檔名" 上面就是虛擬碼,接下來是批處理的實現程式碼@echo offrem 生成臨時列表檔案 dir d:\*.txt /s /a-d /btmp.txt rem 用for命令來讀取那個由dir命令生成的列表檔案 FOR /F "tokens=*" %%a IN ( "more tmp.txt") DO (rem 用Setlocal來啟用環境變數延遲功能 Setlocal EnableDelayedExpansion rem 取得路徑包括了最後一個斜線\ set tempPath=%%~dpa rem 把路徑中的最後一個斜線去掉 set tempPath=!tempPath:~,-1! rem 在for命令中來擴充套件取得路徑名 FOR %%A IN ( "!tempPath!") DO (rem 擴充套件取得上級目錄名 set filePath=%%~nA rem 新的檔名為: 上級目錄名檔名 set new_name=!filePath!%%~nxa rem 重新命名檔名(為了安全,這裡只是用echo把命名的 rem 語句顯示出來) rem 如果要進行重新命名的話,把echo 去掉就可以了 echo ren "%%a" "!new_name!")ENDLOCAL)rem 刪除臨時檔案