1

Я хочу сделать что-то простое (я думал ...)

У меня есть что-то вроде этого:

Folder01 
  |_File1
  |_File2
  |_File3
Folder02
  |_File1
  |_File2
  |_File3
Folder03
  |_File1
  |_File2
  |_File3
Folder04
  |_File1
  |_File2
  |_File3

Я просто хочу скопировать эти данные с помощью robocopy к цели (потому что мне нужен файл журнала и нужно указать атрибуты для копирования).

Но из-за некоторых ограничений я не могу скопировать данные за один прогон, и мне приходится разделять это задание (в действительности около 5000 папок, 3 ТБ).

Поэтому я хочу указать "начальную папку" и последнюю папку, например Folder00X (Folder001, +1, Folder100; задание должно начинаться с Folder001, а с шагами +1 оно должно копировать Folder002, Folder003 ....Folder100).

1 ответ1

0

Задание должно начинаться с Folder001, шаг +1, копировать Folder002, ... Folder100

Для этого вы можете использовать цикл for /l в командном файле.

Следующий пакетный файл повторяет необходимый список имен папок:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
   rem prefix the count with leading zeros
   set "_number=00%%i"
   rem extract the last 3 digits
   echo Folder!_number:~-3!
   )
endlocal

Заметки:

  • Пакетный файл должен находиться в каталоге на один уровень выше Folder001
  • Замените команду echo командой robocopy которая сделает копию за вас.
  • Обрабатывать имена с 4 цифрами (например, Folder1000, ... Папка 2000) нужно поменять командный файл.
    • Заменить (1,1,100) на (1000,1,2000)
    • Замените "_number=00%%i" на "_number=000%%i"
    • Заменить Folder!_number:~-3! с Folder!_number:~-4!

Синтаксис

FOR /L %%parameter IN (start,step,end) DO command 

ключ

  • начало: первый номер
  • шаг: сумма, на которую увеличивается последовательность
  • конец: последний номер

Источник - для / л


Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • enabledelayedexpansion - отложенное расширение приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа.
  • for /l - условно выполнить команду для диапазона чисел.
  • set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.
  • переменные - извлечение части переменной (подстроки).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .