У меня есть директория с подпапками в которых есть папки с названием LOG и BACKUP в большом количестве.Как мне с директории запустить скрипт который найдёт все LOG и BACKUP в подпапках и сохранит их в отдельный каталог без слияния (Потипу LOG1 , LOG2... и тд )
wisgest, Так не заработало,постоянно создаёт одну папку и пытается ее перезаписать.Я попробовал был рандомизировать название для папок(подумал что cnt как то не корректно работал),но всёравно получаю результат при котором,создаётся одна папка с определённым названием и все найденные папки пытаются скопироваться только с одним именем.Также убрал команду %%d заменив ее на %D потому что с двумя символами получал ошибку "Непредвиденное появление: %%d."
setlocal enabledelayedexpansion
set MIN=1
set MAX=99999
set /a R=MIN+(MAX-MIN+1) * %random%/32768
for /d /r "C:\Users\Админ\Desktop\Новая папка (9)" %d in (LOG) do (
Также убрал команду %%d заменив ее на %D потому что с двумя символами получал ошибку "Непредвиденное появление: %%d.
Похоже, что вы запускали код не из пакетного файла, а из входного потока cmd (вводили в консоли). В таком случае, действительно вместо %% в именах переменных цикла надо использовать %.
Также не будет работать включение отложенного раскрытия переменных с помощью setlocal enabledelayedexpansion.
cmd /?
Отложенное расширение переменных среды НЕ ВКЛЮЧЕНО по умолчанию. Можно
включить или отключить отложенное расширение переменных среды для конкретного
вызова CMD.EXE с помощью параметра /V:ON или /V:OFF. Можно включить или
отключить отложенное расширение переменных среды для всех вызовов CMD.EXE на
данном компьютере или для данного пользователя, задав с помощью команды
REGEDIT.EXE в системном реестре значение 0x1 или 0x0 для параметров REG_DWORD
для следующих разделов:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion
и/или
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion
Параметры пользователя переопределяют параметры компьютера. Параметры командной
строки, в свою очередь, переопределяют параметры реестра.
В пакетном файле аргументы SETLOCAL ENABLEDELAYEDEXPANSION или
DISABLEDELAYEDEXPANSION переопределяют параметр /V:ON или /V:OFF. Для получения
дополнительных сведений введите "SETLOCAL /?".
Если отложенное расширение переменных среды включено, то для замены текущего
значения переменной среды во время выполнения может использоваться символ
восклицательного знака "!".
Подробнее об отложенном раскрытии переменных, см. set /?.
dir /b /ad C:\Users\Админ\Desktop\test\*LOG
for /f "tokens=* delims=" %%a in ('dir ...') do (
echo %%a
set /a "logidx=logidx+1"
)
Попробовал ,так не заработало,но понимаю наверняка что неправильно сделал,нужно было как то сохранить ещё выведенное,но моих знаний не хватает на это((
Артём, Я вам не давал готовый скрипт. Я вам дал идеи для реализации своего скрипта.
Код, который вы скопипастили из моего поста не рабочий.
Сделать из него рабочий - не трудно. Но это придется делать самому. Все входные данные для этого у вас есть.