Я работаю над пакетным скриптом для переформатирования каталога разных поставщиков, и у меня возникают проблемы с циклом 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' ломает петли? Также нет необходимости в 'call' в этих операторах' set'. – wOxxOm
% G% - это переменная окружающей среды. Вы ошиблись и хотите иметь %% G из переменной FOR? – Squashman
Я думаю, что вы ищете '%% ~ nxG' – Squashman