所以這一直讓
我感到困惑,我需要幫助完成這項('Dir /D /S A:D')
作業ren "New Folder" New Files"
我嘗試了不同的方法,但我無法將檔案夾重命名
第一次嘗試
@ECHO OFF
FOR /D %%d IN ('Dir /D /S A:D') DO (
REN "New Folder" "New Files"
)
第二次嘗試
@echo off
FOR /D %%D IN ('Dir /D /S A:D') DO RENAME "%%D\New Folder" New Files
第三次嘗試
@echo off
FOR /D %%D IN ('Dir /D /S A:D') DO CALL :RENAME %%D
:RENAME
SET CRITERIA=\New Folder
FOR /D %%R IN (%1%CRITERIA%) DO RENAME %%R "New Files"
我想做的是重命名檔案夾。我有很多檔案夾和子檔案夾
,每個主目錄檔案夾都有不同的名稱,因此腳本需要讀取每個檔案夾并找到New Folder并將其重命名為New Files
layout
Main Folder
---- Folder 1
------| New Folder
---- Folder 2
------| Folder 22
----------| New Folder
新檔案夾位于許多不同的位置,因此腳本需要能夠讀取主檔案夾、子檔案夾等
對此的任何幫助都會很棒
更新的問題
@echo off
for /f "tokens=*" %%f in ('dir /s /b a:d "New Folder"') do (
set "filename=%%~nf"
ren "%%f" "New Files"
)
前
Main Folder...
Rename folder.bat
....| New Folder
......| New Folder
........| New Folder
不好的結果
Main Folder...
Rename folder.bat
....| New Folder
......| New Files
........| New Folder
它應該做什么
Main Folder...
Rename folder.bat
....| New Folder
......| New Files
........| New Files
需要幫助
我什至試過這個
@echo off
for /f %%f in ('dir /s /b /a:d "New Folder"') do ren "%%f" "New Files"
uj5u.com熱心網友回復:
首先,您似乎與 混淆for /D了for /F,您需要在這里使用后者:
for /F "tokens=*" %%I in ('dir /S /B /A:D-H-S "New Folder"') do (
…
)
這將遍歷以當前作業目錄為根的整個目錄樹(不一定是批處理腳本的容器!)。所述tokens=*的選項for /F,在路徑的空格被維持(除去主導的,但如無論如何不可能路徑)確保。開關/A:D-H-S的dir確保了的檔案,以及隱藏和系統目錄,被排除在外。
但是還有一個問題:dir /S在每個分支的基礎上從層次結構的頂部到底部回傳專案,并且與for /F一起dir讓整個目錄樹在回圈迭代開始之前構建。因此,當現在重命名回圈體中的某個目錄時,它的任何子路徑都會獲得新路徑,盡管舊路徑被緩沖,從而導致重命名失敗。例如,當目錄D:\Path\To\Root\New Folder重命名為 時D:\Path\To\Root\New Files,子目錄D:\Path\To\Root\New Folder\New Folder不再存在,因為它的路徑現在是D:\Path\To\Root\New Files\New Folder,因此無法找到它。
要克服這個問題,只需反轉整個目錄樹以進行迭代sort:
cd /D "D:\Path\To\Root" & rem // (use `%~dp0.` to specify a path relative to the container of this script)
for /F "tokens=*" %f in ('dir /S /B /A:D-H-S "New Folder" ^| sort /R') do (
ren "%%f" "New Files"
)
這樣,在處理D:\Path\To\Root\New Folder\New Folder其父目錄之前,首先重命名子目錄D:\Path\To\Root\New Folder。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409883.html
標籤:
