我正在处理批处理脚本以重新格式化不同供应商的目录,而我遇到了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
再次感谢!
答案 0 :(得分:0)
我相信这是你想要完成的事情。
: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
SET DirPath=%%G
SET DirFolder=%%~nxG
ECHO DirPath: !DirPath!
ECHO DirFolder: !DirFolder!
ECHO G: %%G
ECHO.
ENDLOCAL
)
PAUSE