Это на самом деле очень просто.
У вас уже есть работающий код, который копирует из источника в каждый подкаталог.В псевдокоде: FOR (each directory) DO COPY source to target
.
У вас также есть код, который может копировать файл 10 раз с увеличивающимися именами.Вы хотите сделать это для каждого каталога на 1-м шаге.Итак, снова в псевдокоде, это будет выглядеть примерно так:
FOR (each directory) DO (
COPY source to target
FOR (N=1 TO 10) DO COPY source to targetN
)
Ни один из приведенных выше синтаксисов не является реальным, за исключением того, что скобки после DO на самом деле показывают, как вы позволяете команде batch FOR выполнитьблок из нескольких команд.(На самом деле есть другие методы, чтобы сделать это, но парены работают просто отлично.)
Часть, которую вы пропустили, - это как вставить возрастающее число в целевое имя %% A.Это делается с помощью модификаторов переменных FOR, как описано в конце документации FOR, к которой можно получить доступ из командной строки, набрав HELP FOR
или FOR /?
.
Модификаторы позволяют деконструироватьспецификация файла на составные части.Обратите внимание, что файл не должен существовать физически, спецификацию файла все равно можно разбить на составные части.
%%~dpnA
= диск: \ путь \ baseName (без расширения) %%~xA
= .extension, включая точку.
У вас уже есть увеличивающийся номер - я собираюсь использовать %%N
вместо %%1
.Таким образом, полной целью будет объединение трех компонентов: %%~dpnA%%N%%~xA
.
Соединение всего этого дает полное решение:
FOR /R d:\ %%A IN (test.txt) DO (
copy d:\%username%\Desktop\Test\Resources\test.txt %%A
FOR /L %%N IN (1 1 10) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%~dpnA%%N%%~xA
)