0
我正在處理批處理腳本以重新格式化不同供應商的目錄,並且我遇到了有關for循環的問題。無法多次引用for循環變量的值
到目前爲止,腳本採用包含文件的原始目錄(SampleDirectory),並將第一級文件夾(由供應商名稱組成)複製到「NewDirectory」,該目錄將成爲重新組織的目標目錄文件將被移至。接下來我要做的是遍歷「NewDirectory」中的路徑並查找供應商的名稱,這是最低級別的目錄。從那裏,我將使用供應商名稱,並將其附加到NewDirectory路徑的末尾,以便我可以在新文件夾中創建子目錄。
:start
MKDIR "C:\webnet\Guy\113015\NewDirectory"
ROBOCOPY "C:\webnet\Guy\113015\SampleDirectory" "C:\webnet\Guy\113015\NewDirectory" /E /LEV:2 /XF
PAUSE
FOR /D %%G IN (C:\webnet\Guy\113015\NewDirectory\*) DO (
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO G: %%G
CALL SET DirPath=%%G
CALL SET DirFolder=!DirPath!
:GetFolder
CALL SET GetFolderTemp=!DirFolder:*\=!
IF NOT !GetFolderTemp!==!DirFolder! (
SET DirFolder=!GetFolderTemp!
GOTO :GetFolder
)
ECHO DirPath: !DirPath!
ECHO DirFolder: !DirFolder!
ECHO G: %G%
PAUSE
ENDLOCAL
)
ECHO !
PAUSE
我現在遇到的問題是,我只是通過第一個文件夾,並得到它的標題。我感覺好像我已經覆蓋for循環的變量,導致它早期結束。
輸出:
G: C:\webnet\Guy\113015\NewDirectory\Arrington Arms
DirPath: C:\webnet\Guy\113015\NewDirectory\Arrington Arms
DirFolder: Arrington Arms
G: %G
預期輸出:再次
G: C:\webnet\Guy\113015\NewDirectory\Arrington Arms
DirPath: C:\webnet\Guy\113015\NewDirectory\Arrington Arms
DirFolder: Arrington Arms
G: C:\webnet\Guy\113015\NewDirectory\Arrington Arms
G: C:\webnet\Guy\113015\NewDirectory\Arrington Arms - Copy
DirPath: C:\webnet\Guy\113015\NewDirectory\Arrington Arms - Copy
DirFolder: Arrington Arms - Copy
G: C:\webnet\Guy\113015\NewDirectory\Arrington Arms - Copy
G: C:\webnet\Guy\113015\NewDirectory\Bosch
DirPath: C:\webnet\Guy\113015\NewDirectory\Bosch
DirFolder: Bosch
G: C:\webnet\Guy\113015\NewDirectory\Bosch
謝謝!
你知道'goto'打破了循環嗎?這些'set'語句中也不需要'call'。 – wOxxOm
%G%是一個環境變量。您是否錯誤輸入並且意味着FOR變量中有%% G? – Squashman
我想你要找的是'%%〜nxG' – Squashman