Необходимо найти решение для пакетной обработки копирования набора файлов с таким же именем в другое место с ограничением в количестве - PullRequest
0 голосов
/ 02 июня 2018

Новичок в кодировании файла bat.Требуется решение для проблемы ниже.

У меня 10000 файлов идут в пакетном процессе.В каждом имени файла было два файла (один - PDF, а другой - TXT-файл).например,

File2.pdf
File1.pdf
File2.txt 
File1.txt

, как указано выше, файл достигает папки.Мне нужно скопировать набор файлов (файлы с таким же именем; без случайных файлов) в другое место из источника.и мне нужно сначала ограничить файлы транзакции 500, дать некоторое время сна и сделать следующую передачу 500, пока не завершатся все 10000. Это необходимо, потому что, если я скопирую все 10000 одновременно, приложение, загрузка которого внутри, получит удар или займет много времениобрабатывать.

признателен, если вы можете помочь в этом .....

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Спасибо за ваше время, чтобы решить мою проблему.Наконец, я думаю, что нашел решение проблемы.

Ниже код служит моей цели.Сначала я взял список файлов из папки в текстовый файл, и я начинаю читать по одному и увеличиваю счет на 1 для каждого чтения.

это работает

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

dir C:\Users\Dell\Desktop\TestCode\input\*.* /B /O:N >>C:\Users\Dell\Desktop\TestCode\test.txt

Set Delay=10
Set Cnt=1
set Chunk=10

for /F "tokens=*" %%A in (C:\Users\Dell\Desktop\TestCode\test.txt) do (
Set /A "Cnt+=1,PauseNow=Cnt%%Chunk"
if !PauseNow!==0 Timeout %Delay%
xcopy "C:\Users\Dell\Desktop\TestCode\input\%%A" "C:\Users\Dell\Desktop\TestCode\output"
)

del C:\Users\Dell\Desktop\TestCode\test.txt

pause

Я сортируютекстовый файл перед его обработкой, который дает мне точный файл заказа для обработки.

спасибо за то, что поделились вашей идеей, которая помогла мне перейти к этому !!!!!!!

0 голосов
/ 02 июня 2018

for /f обрабатывает вывод dir по одному.
set /a считает и вычисляет остаток от count / chunk
Если остаток равен 0, мы имеем кратные значения chunk(500) и
.команда timeout для ожидания delay(30) секунд.

Адаптируйте переменные источника (Src) и назначения (Dst) к вашей среде.

:: Q:\Test\2018\06\02\SO_50654344.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
set "Src=C:\Users\Dell\Desktop\TestCode\input\"
Set "Dst=C:\Users\Dell\Desktop\TestCode\output\"
Set "Ext=*.*"

Set Chunk=10
Set Delay=10
Pushd "%Src%"
Set Cnt=1
For /F "delims=" %%F in ('Dir /B /ON %Ext%') Do (
   Set /A "Cnt+=1,PauseNow=Cnt%%Chunk"
   if !PauseNow!==0 Timeout %Delay%
   xcopy "%%~fF" "%Dst%"
)
PopD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...