Остановить процесс копирования, когда папка достигает определенного размера - почему код не работает?

243
Daniel

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

pic.bat

start temp\check.bat for /r "%userprofile%" %%a in (*.jpg) do @copy /y "%%a" temp 

И я хотел бы остановить этот процесс, как только папка достигнет определенного размера, поэтому я попытался отслеживать размер папки, используя другой пакет, и по заданию убивать процесс копирования после достижения определенного размера.

check.bat

:loop setlocal enabledelayedexpansion set /a value=0 set /a sum=0 for /r %1 %%i in (*) do ( set /a value=%%~zI/1024 set /a sum=!sum!+!value! ) if %sum% gtr 150000 goto end goto loop :end taskkill /im pic.bat 

Check.bat расположен в папке temp, куда копируются изображения + он запускается одновременно с pic.bat - но ничего не происходит, когда предел нарушается. Вы видите что-то не так здесь? Я прошу прощения, если ответ очевиден, я новичок во всем этом.

1
Попробуйте вызвать taskkill с флагами / f (force) и / или / t (tree). Я подозреваю, что / т сделает это. ventsyv 7 лет назад 0
Если вы запустите check.bat, вы видите команды, которые выполняются с правильными значениями? Самый простой способ сделать это - убедиться, что папка больше предела размера, а затем запустить проверку и посмотреть, пытается ли она выполнить команду taskkill. Twisty Impersonator 7 лет назад 0
Почему бы вам просто не проверить предел в pic.bat после копирования каждого файла? т.е. объединить два пакетных файла. Тогда вместо использования taskkill просто вырвитесь из цикла for. DavidPostill 7 лет назад 0
Я решил эту проблему, получив идентификатор процесса процесса pic.bat, а затем распечатав этот идентификатор процесса в текстовый файл, который check.bat прочитал и использовал для уничтожения процесса (taskkill / pid% pid_here%). Похоже, проблема была в том, что taskkill распознал только cmd.exe, а не pic.bat. Daniel 7 лет назад 0
Поздравляем - вы успешно создали [Rube Goldberg machine] (https://en.wikipedia.org/wiki/Rube_Goldberg_machine) dbenham 7 лет назад 0

0 ответов на вопрос