Я очень новичок в программировании, но написал скрипт, использующий File::Find
для вычисления размера папки и подпапок, используя следующую строку из примера:
find(sub { $total += -s if -f }, "$scanlocation.vir");
This работает большую часть времени, однако, была одна папка, которая была очень глубокой, и она отображала ошибку: Can't cd to ../../../../../../..
и остановлена.
Я пытался ссылаться на местоположение сканирования по букве локального диска, назначенной сети букве с другого компьютера и даже в формате UN C \ server \ share. Ссылаясь на букву локального диска, отображает ошибку, а два других метода не выдают ошибку, но также не вычисляют сумму.
У меня есть список каталогов, который заканчивается следующим образом:
Directory of x:\ready\14235.20013336.vir\2020-01-13\HP27680588713\PUBLIC\archive\Rasphone
03/07/2020 05:24 PM <DIR> .
03/07/2020 05:24 PM <DIR> ..
06/24/2013 05:22 PM 2 rasphone.pbk
1 File(s) 2 bytes
Directory of x:\ready\14235.20013336.vir\2020-01-13\HP27680588713\PUBLIC\archive\WirelessKeyView
03/07/2020 05:24 PM <DIR> .
03/07/2020 05:24 PM <DIR> ..
01/13/2020 06:39 PM 0 WirelessKeyView.txt
01/13/2020 06:39 PM 0 WirelessKeyViewExport.txt
2 File(s) 0 bytes
Total Files **Listed:
8693 File(s) 8,711,887,757 bytes**
5852 Dir(s) 98,156,724,404,224 bytes free
И думал, что регулярное выражение может вытащить значение. Я подошел близко к /Listed:.*File\(s\).*?bytes/gs
, но могу сравниться только с жирной частью выше.
Моя конечная цель - получить размер на диске указанной папки, включая подпапки в байтах. Я уже создаю текстовый файл с прямым выводом.
Итак, любые предложения или указывать мне в правильном направлении будут оценены.
Спасибо.