Показать полную графическую версию : Проверка файлов в сетевом каталоге, и создание списка из тех которые по размеру < N
Здравствуйте, забрел вот недавно на Ваш ресурс, пересмотрел кучу подобного материала, и к сожалению не смог решить свою задачу. Надеюсь на помощь а не осуждение. Заранее огромное спасибо.
Задача:
есть сетевая папка в вложенными под папками \\some_dir\local_dir\
необходимо просканировать эту папку, все под папки на предмет наявности фалов размеров свыше N байт
необходимо полученный результат* дописать в лог файл лежащий под боком у батника
вот что имеется, выдрано из этого форума, но там вместо логирования шло удаление, теперь от %%i похоже получаю ссылку на файл и он открывается, а моя задача эту ссылку поместить в лог файл. for /f "delims=" %%i in ('dir "E:\Downloads" /b /s /a-d') do if %%~zi gtr 50000000 %%i>>poisk.txt
п.с. прошу прощения если кого то обидел познаниями cmd/bat
*Путь к файлу хотя бы, оптимально путь к файлу + размер
@echo off
setlocal enableextensions enabledelayedexpansion
set sRootFolder=\\some_dir\local_dir
set /a lLimit = 50*1^<^<20
if exist "%sRootFolder%\." (
>"poisk.txt" (
for /f "usebackq delims=" %%i in (
`dir "%sRootFolder%\*.*" /b /s /a:-d`
) do if %%~zi gtr %lLimit% echo %%i
)
) else (
echo Can't find root folder [%sRootFolder%].
exit /b 1
)
endlocal
exit /b 0
«50*1^<^<20» — «50×2²⁰», 50 Мб.
оптимально путь к файлу + размер »
@Echo Off
(for /f "delims=" %%i in ('dir "E:\My Downloads" /b /s /a-d') do if %%~zi gtr 50000000 Echo %%i %%~zi)>>poisk.txt
Спасибо огромное! Все работает, осталось подружить с кириллицей, но это все мелочи
А, недоглядел:
+ размер »
добавьте вывод, как у коллеги:
… Echo %%i %%~zi … »
осталось подружить с кириллицей, »
Сохраните пакетный файл в кодировке OEM/866. Вывод будет в той же кодировке. Это нормально. Для корректного отображения используйте редактор, который понимает эту кодировку.
%%i %%~zi »
прошу прощения но похоже даже в копиосте умудряюсь допустить ошибки)
@echo off
setlocal enableextensions enabledelayedexpansion
set sRootFolder=E:\Downloads
set /a lLimit = 50*1^<^<20
if exist "%sRootFolder%\." (
>"poisk.txt" (
for /f "usebackq delims=" %%i in (
`dir "%sRootFolder%\*.*" /b /s /a:-d`
) do if %%~zi gtr %lLimit% echo %%i %%~zi
)
) else (
echo Can't find root folder [%sRootFolder%].
exit /b 1
)
endlocal
exit /b 0
результат, до того как втулил параметр работало, а сейчас все файлы кидает
E:\>if 73820995 GTR 52428800 echo E:\Downloads\111.zip 73820995
E:\Downloads\111.zip 73820995
E:\>if 159281 GTR 52428800 echo E:\Downloads\Manual.pdf 159281
E:\>if 992864 GTR 52428800 echo E:\Downloads\Msvbvm50.exe 992864
E:\>if 702253 GTR 52428800 echo E:\Downloads\msvbvm50.zip 702253
E:\>if 73820995 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\111.zip 73820995
E:\Downloads\Ќ®ў*п Ї*ЇЄ*\111.zip 73820995
E:\>if 159281 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Manual.pdf 159281
E:\>if 992864 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Msvbvm50.exe 992864
E:\>if 702253 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\msvbvm50.zip 702253
E:\>if 73820995 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Ќ®ў*п Ї*ЇЄ*\111.zip 73820995
E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Ќ®ў*п Ї*ЇЄ*\111.zip 73820995
E:\>if 159281 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Ќ®ў*п Ї*ЇЄ*\Manual.pdf 159281
E:\>if 992864 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Ќ®ў*п Ї*ЇЄ*\Msvbvm50.exe 992864
E:\>if 702253 GTR 52428800 echo E:\Downloads\Ќ®ў*п Ї*ЇЄ*\Ќ®ў*п Ї*ЇЄ*\msvbvm50.zip 702253
п.с. понял что дело в echo, вся строка отмечается как текст...
оишбка была в кодировке, осталось найти OEM/866 блокнот
Iska, а почему не set /a lLimit = 50^<^<20?
Огромное спасибо парни! Вопрос полностью решен!
Может кому понадобится...
Итоговый код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sRootFolder=E:\Downloads
set /a lLimit = 50*1^<^<20
if exist "%sRootFolder%\." (
>"poisk.txt" (
for /f "usebackq delims=" %%i in (
`dir "%sRootFolder%\*.*" /b /s /a:-d`
) do if %%~zi gtr %lLimit% echo %%i %%~zi )
) else (
echo Can't find root folder [%sRootFolder%].
exit /b 1
)
endlocal
exit /b 0
Результат работы:
E:\Downloads\111.zip 73820995
E:\Downloads\Новая папка\111.zip 73820995
E:\Downloads\Новая папка\Новая папка\111.zip 73820995
50*1^<^<20 »
исходя из математики должно отработать...
так и получилось, выдает идентичный ответ
Iska, а почему не »
Просто для понятности. «a на b в степени n» привычней.
к сожалению возникла новая проблема
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\it_support>E:\поиск.bat
Имя папки \\192.168.8.10\public\Проверить на сохранение\Мероприятия\лучшая школа
России\нарезать1\нарезка для конкурса Образование\9Дополнительная информация и
приложения к Программе развития\17 дополнительные материалы к паспорту образоват
ельного учреждения\дополнительная информация об образовательном учреждении слишк
ом длинно.
Имя папки \\192.168.8.10\public\Проверить на сохранение\Мероприятия\лучшая школа
России\нарезка для конкурса Образование\9Дополнительная информация и приложения
к Программе развития\17 дополнительные материалы к паспорту образовательного уч
реждения\дополнительная информация об образовательном учреждении слишком длинно.
и как результат файл пуст батник висит, файлов конечно жутко много, но за пару часов думаю 50+ мб парочку точно нашлось бы. Возможно у кого есть идеи или догадки?
п.с. предполагаю что из за ошибки он попросту остановился на последнем каталоге, т.е. на каталоге с ошибкой
возникла новая проблема...
Возможно у кого есть идеи или догадки? »
У Вас же написана проблема, вот и решайте ее:Имя папки \\192.168.8.10\public\Проверить на сохранение\Мероприятия\лучшая школа
России\нарезать1\нарезка для конкурса Образование\9Дополнительная информация и
приложения к Программе развития\17 дополнительные материалы к паспорту образоват
ельного учреждения\дополнительная информация об образовательном учреждении слишком длинно.
Имя папки \\192.168.8.10\public\Проверить на сохранение\Мероприятия\лучшая школа
России\нарезать1\нарезка для конкурса Образование\9Дополнительная информация и
приложения к Программе развития\17 дополнительные материалы к паспорту образоват
ельного учреждения\дополнительная информация об образовательном учреждении слишк
ом длинно. »
Данная ошибка не критична для пакетного файла: он будет продолжать работать и выводить результаты, только содержимое такой папки не будет обрабатываться.
Могу предложить записывать эти ошибки в отдельный файл: 2>errors.txt, а потом анализировать папки из списка ошибок также командой "dir", но при помощи создания для каждой такой папки виртуального диска (команда "subst").
, а потом анализировать папки из списка ошибок также командой "dir", но при помощи создания для каждой такой папки виртуального диска (команда "subst"). »
боюсь я затрудняюсь даже представить как это будет выглядеть в коде
Данная ошибка не критична для пакетного файла: он будет продолжать работать и выводить результаты, только содержимое такой папки не будет обрабатываться. »
к сожалению вы не правы, бат файл за целый день не дописал не единой строки в текстовый файл, видимо все же это критическая ошибка, и он не продолжает проверять файлы
Переходите на PowerShell. Рекурсия и фильтрация — его конёк.
видимо все же это критическая ошибка »
Вечером я подумаю над решением. Ещё, может быть, можно как-то использовать короткие имена.
Переходите на PowerShell. Рекурсия и фильтрация — его конёк. »
спасибо за напутствие, по всей видимости это и будет выход, "букварь" в зубы и знакомится с PowerShell
Вечером я подумаю над решением. Ещё, может быть, можно как-то использовать короткие имена. »
только в ручную укорачивать, и то не факт что получится, никому не пояснить что предложение в имени папки это не хорошо... а 10,15,20 таких папок одна в другой.... спасибо за старания, если будет вызывать заморочки, забудьте, оно того не стоит. я пока познакомлюсь с шелом, возможно в нем получится это реализовать.
в ручную укорачивать »
"Использовать короткие имена" -- это не физически их укорачивать, а применять команду "dir" с параметром "/x".
@>poisk.txt robocopy "E:\Downloads" %random% /bytes /nc /ndl /njh /njs /l /s /min:52428800
Вот и всё решение. Ничто никуда не копируется, создаётся только нужный Вам список. Длинные пути поддерживаются по умолчанию. Если у Вас ОС Windows XP, в комплектацию которой не входит "Robocopy.exe", то только ради осуществления такого решения поставленной Вами задачи эту утилиту следует установить.
Eugene Shugaev
16-03-2014, 16:23
Касательно OEM 866 либо notepad++ или far. Или любой dos-овский редактор
Век живи век учись, о таком мощном интегрированном средстве даже не слышал.
54699863 \\192.168.8.10\public\‚ҐЎЁ**ал\ўҐЎЁ**а Џ„*\Rec-2010.12.21-11;44;59.mp3
60870052 \\192.168.8.10\public\‚ҐЎЁ**ал\ўҐЎЁ**а Џ„*\Rec-2010.12.21-13;52;59.mp3
125929472 \\192.168.8.10\public\ўбваҐз* б ¬Ё*-ў®¬ „Ћ«мЈ* ‚*«Ґамп*®ў** 15 *®пЎап12\€’ Їа.ppt
227021824 \\192.168.8.10\public\ўбваҐз* б ¬Ё*-ў®¬ „Ћ«мЈ* ‚*«Ґамп*®ў** 15 *®пЎап12\€’ Їа€’Ћѓ.ppt
212997632 \\192.168.8.10\public\ўбваҐз* б ¬Ё*-ў®¬ „Ћ«мЈ* ‚*«Ґамп*®ў** 15 *®пЎап12\ЏаҐ§Ґ*в*жЁп Ї® Їа®дЁ«*ЄвЁЄҐ 2012 Ј®¤.ppt
187582976 \\192.168.8.10\public\ўбваҐз* б ¬Ё*-ў®¬ „Ћ«мЈ* ‚*«Ґамп*®ў** 15 *®пЎап12\ЏаҐ§Ґ*в*жЁп Ї® Їа®дЁ«*ЄвЁЄҐ 55.ppt
60156416 \\192.168.8.10\public\„«п б*©в*\** б*©в.doc
943736832 \\192.168.8.10\public\Є Є«*бб*л¬ з*б*¬\ЌЂђЉЋ’€Љ€\б ¤ЁбЄ* 2\VIDEO_TS\VTS_01_1.VOB
83320832 \\192.168.8.10\public\Є Є«*бб*л¬ з*б*¬\ЌЂђЉЋ’€Љ€\бЎ®а*ЁЄ Їа®дЁ«*ЄвЁзҐбЄЁе ¬*вҐаЁ*«®ў “”‘ЉЌ ђ®ббЁЁ Ї® ‘ўҐа¤«®ўбЄ®© ®Ў«*бвЁ\*ЄжЁЁ, Є®*Єгабл\ѓ®а®¤бЄ®© Є®*Єгаб ˜Є®«* ЎҐ§ **аЄ®вЁЄ®ў.doc
99671670 \\192.168.8.10\public\Є Є«*бб*л¬ з*б*¬\ЌЂђЉЋ’€Љ€\бЎ®а*ЁЄ Їа®дЁ«*ЄвЁзҐбЄЁе ¬*вҐаЁ*«®ў “”‘ЉЌ ђ®ббЁЁ Ї® ‘ўҐа¤«®ўбЄ®© ®Ў«*бвЁ\ЏаЁЎ*Є*«мҐ Їа®вЁў **аЄ®вЁЄ®ў\2.avi
412748070 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\Ѓ*ЎгиЄЁ**\€‚‹…‚Ђ 8Ѓ\Ќ®ўл© Ј®¤ ў 34иЄ®«Ґ(8Ѓ).avi
60156416 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\Ѓ®аЁбоЄ\** б*©в.doc
57653090 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\Ѓ®айҐ*Є®ў\Љ*ЁЈЁ\‘®ўаҐ¬Ґ**л© га®Є б Ё*вҐа*ЄвЁў*®© ¤®бЄ®© Activ Board.pdf
62688688 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\Ѓ®айҐ*Є®ў\Љ*ЁЈЁ\¬®¤г«м**п бЁб⥬* PROLog Ё PROClass\proclass prolog\PROLog (H)\PPOLog_Setup_2.0.exe
119684984 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\Ѓ®айҐ*Є®ў\Ї«**л нў*Єг*жЁ©\Backup_of_˜Є®«* 34 Ўг«. Љ®¬б®¬®«мбЄЁ© - 8 ив..wmf
119684984 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\Ѓ®айҐ*Є®ў\Ї«**л нў*Єг*жЁ©\Backup_of_˜Є®«* 34 Ўг«. Љ®¬б®¬®«мбЄЁ© - 8 ив.5.wmf
99608576 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\‚*ᨫ쥢*\18 *®пЎап 3\01-ЏҐаў*п ўбваҐз* (2).avi
126421766 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\‚*ᨫ쥢*\18 *®пЎап 3\Њ*и* Ё ЊҐ¤ўҐ¤м 2.avi
60362240 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\‚*ᨫ쥢*\18 *®пЎап 3\ЏаҐ§Ґ*в*жЁп1 (3).ppt
70399798 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\‚*ᨫ쥢*\Є«*бб*лҐ з*бл\„Ґ*м-Ї®¦Ё«®Ј®-祫®ўҐЄ*-(1-®ЄвпЎап).mp4
80777728 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ«ге*ॢ*\ЂввҐбв*жЁп\Ђ**«ЁвЁзҐбЄЁ© ®взҐв.ppt
263368192 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ®ў®агеЁ**\ўлбвгЇ«Ґ*ЁҐ Ќ€.ppt
205720576 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ®ў®агеЁ**\® иЄ®«Ґ\*ЄЄаҐ¤Ёв*жЁп - Є®ЇЁп.ppt
205763584 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ®ў®агеЁ**\® иЄ®«Ґ\*ЄЄаҐ¤Ёв*жЁп.ppt
263368192 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ®ў®агеЁ**\® иЄ®«Ґ\ўлбвгЇ«Ґ*ЁҐ Ќ€.ppt
212984320 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ®ў®агеЁ**\® иЄ®«Ґ\ЏаҐ§Ґ*в*жЁп Ї® Їа®дЁ«*ЄвЁЄҐ 2012 Ј®¤.ppt
111051264 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\ѓ®ў®агеЁ**\® иЄ®«Ґ\ђЂ„“ѓЂ 2013.ppt
1065353216 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\„Ґ*йЁЄ®ў*\‚€— 2013\ваЁ бҐбвал\VTS_01_1.VOB
168525824 \\192.168.8.10\public\‹Ёз*лҐ Ї*ЇЄЁ\„Ґ*йЁЄ®ў*\‚€— 2013\ваЁ бҐбвал\VTS_01_2.VOB
Касательно OEM 866 либо notepad++ или far. Или любой dos-овский редактор »
спасибо я разобрался, думал notepad++ сам распознает кодировку, но нет пришлось в ручную выбрать
Снова воспользуюсь нагло вашей помощью, как адаптировать условия поиска "по размеру" на по расширению т.е. проверить наличие фалов нескольких расширений jpg,gif, avi и пр. по идее нужно из фала подгружать несколько расширений?
@>poisk.txt robocopy "E:\Downloads" *.jpg *.avi /nc /ndl /njh /njs /l /s
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.