PDA

Показать полную графическую версию : [решено] Проверить каждую папку из списка txt-файла на всем жестком диске по трем условиям


KOD65001
08-07-2020, 14:30
Проверить каждую папку из списка txt-файла на всем жестком диске по трем условиям:

1) если в папке (из списка txt-файла) ИЛИ в ее подпапках есть файлы, которые по своему размеру больше или равно 11 Kb, то записать в текстовый файл 1 (1.txt)

2) если в папке (из списка txt-файла) файлов нету ИЛИ если файлы есть, но имеют размер от 0 Kb до 11 Kb, то записать в текстовый файл 2 (2.txt)

3) если на всем жестком диске отсутствует "папка" которую мы проверяем (из списка txt-файла), то записать тоже в текстовый файл 2 (2.txt)

Папок и подпапок может быть много, файлов тоже. Уровни папок могут быть от 1 до 20 примерно.

Файлы могут быть разного типа: exe, txt, jpg, mp4, и другие

Файлы, размер которых 0 kb - это просто недокаченные файлы, программ и т.д. Стандартный проводник показывает, что файл в папке есть, а в свойствах файла показывает размер 0 Kb. (эти файлы нужно записать в 2.txt)

Для наглядности опишу пример что должно получиться...


Пример списка папок txt-фала:

Отчёт № 754 © MF 办公室
Программа № 101 © MF 办公室
Программа № 104 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 127 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 109 © MF 办公室
Отчёт № 540 © MF 办公室
Отчёт № 555 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 797 © MF 办公室
Отчёт № 807 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 907 © MF 办公室
Отчёт № 914 © MF 办公室



Пример файлов и папок которые на жестком диске E (-> размеров в именах файлов нет!!! эти размеры представлены из свойств файлов!!! <-):

E:\Программа № 101 นี่คือวันอันยิ่งใหญ่ © GJ\Программа № 101 © MF 办公室\Программа MF © นี่คือวันอันยิ่งใหญ่办公室.exe (размер 11 Kb)

E:\Программа № 104 นี่คือวันอันยิ่งใหญ่ © GJ\Программа № 105 © MF 办公室\Программа № 1 MF © นี่คือวันอันยิ่งใหญ่办公室.exe (размер 27 Kb)

E:\Отчёт № 127 นี่คือวันอันยิ่งใหญ่ © GJ\Отчёт № 127 © MF.apk (размер 34 Mb)

E:\Отчёт № 108 นี่คือวันอันยิ่งใหญ่ © GJ\Отчёт № 109 © MF 办公室\Отчёт № 109 MF © นี่คือวันอันยิ่งใหญ่办公室.rar (размер 4 Gb)

E:\Отчёт № 550 นี่คือวันอันยิ่งใหญ่ © GJ\Отчёт № 540 © MF 办公室\

E:\Отчёт № 555 นี่คือวันอันยิ่งใหญ่ © GJ\

E:\Отчёт № 791 นี่คือวันอันยิ่งใหญ่ © GJ\Отчёт № 797 © MF 办公室\Программа № 798 apk © นี่คือวันอันยิ่งใหญ่办公室.exe (размер 0 Kb)

E:\Отчёт № 807 นี่คือวันอันยิ่งใหญ่ © GJ\Отчёт № 808 © MF 办公室\MF © นี่คือวันอันยิ่งใหญ่办公室.txt (размер 10 Kb)

E:\Отчёт № 907 นี่คือวันอันยิ่งใหญ่ © GJ\Отчёт № 907 © MF 办公室\Отчёт № 907 MF.txt (размер 0 Kb)



Содержимое 1.txt после выполнения скрипта:

Программа № 101 © MF 办公室
Программа № 104 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 127 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 109 © MF 办公室



Содержимое 2.txt после выполнения скрипта:

Отчёт № 754 © MF 办公室
Отчёт № 540 © MF 办公室
Отчёт № 555 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 797 © MF 办公室
Отчёт № 807 นี่คือวันอันยิ่งใหญ่ © GJ
Отчёт № 907 © MF 办公室
Отчёт № 914 © MF 办公室

Fors1k
09-07-2020, 00:22
param(
$path = "C:\Files\list.txt"
)cls

gc $path|%{if(gci -rec -file $_|? length -ge 11kb)
{$_>>"C:\Files\1.txt"} else{$_>>"C:\Files\2.txt"}}

KOD65001
09-07-2020, 15:29
Fors1k, скрипт не выполняет условие 1). Из списка list.txt в папке есть файл больше 11 Kb, все равно заносит ее в 2.txt, а нужно в 1.txt согласно условию 1)

Fors1k
09-07-2020, 16:41
Проверял вот так:
list.txt:
C:\2\1\26\asd
C:\2\1\26\qwe
C:\2\1\26\zxc
C:\2\1\26\www
Папки:
C:\2\1\26\asd\123\test.txt (12kb)
C:\2\1\26\www\
C:\2\1\26\qwe\1.txt (1kb)
C:\2\1\26\zxc\test1.txt (583kb)
1.txt:
C:\2\1\26\asd
C:\2\1\26\zxc
2.txt:
C:\2\1\26\qwe
C:\2\1\26\www
Все работает.

KOD65001
09-07-2020, 21:00
Ура!!! Работает! :) Fors1k, Спасибо за решение и наводку! Нужно было просто поставить пути к папкам. Ваш вариант, даже лучше чем у меня..а тогда как поставить один общий путь, где будет идти поиск по тем же трем условиям, чтобы не прописывать к каждой папке полный путь, а поставить в list.txt одну строчку C:\2\1\26\ и получить тот же результат ?

Iska
11-07-2020, 15:10
чтобы не прописывать к каждой папке полный путь, »
А в чём проблема-то прописать полный путь?

KOD65001
11-07-2020, 19:04
А в чём проблема-то прописать полный путь? »

Проблема -> Папок и подпапок может быть много »[/q]

И в случае, который предложил Fors1k отлично работает так:

Проверял вот так:
list.txt:
Цитата:
C:\2\1\26\asd
C:\2\1\26\qwe
C:\2\1\26\zxc
C:\2\1\26\www »

Прописывать полный путь к каждой папке довольно затруднительно...

Пробовал поставить полный путь в list.txt, где нужно делать поиск "C:\2\1\26\" без указаний папок т.е. просто пишу место сканирования, но скрипт просто копирует строчку "C:\2\1\26\" из файла list.txt в файл 1.txt

Iska
11-07-2020, 19:45
Прописывать полный путь к каждой папке довольно затруднительно... »
Ctrl-Insert, Shift-Insert, Shift-Insert, Shift-Insert, Shift-Insert… — затруднительно? Размножьте имя каталога в Microsoft Excel протягиванием, скопируйте, вставьте в Блокнот, добавьте имена искомых подкаталогов.

Для пользующих Far Manager — и того проще: выделить имена подкаталогов, нажать Ctrl-Alt-Insert и вставить полученные полные пути к выделенным подкаталогам из Буфера обмена в редактор.

KOD65001
11-07-2020, 21:15
Iska, Не так поняли. Поиск искомых каталогов - с этим прекрасно справляется код от Fors1k!
Нужно модернизировать код, чтобы скрипт автоматизированно поверил все содержимое что находится в папке "26" без указания каталогов, используя для этого написанный код в скрипте, а не посредством предложенных клавиш или утилит.

Iska
11-07-2020, 22:16
KOD65001, я прекрасно понял.

Fors1k
12-07-2020, 15:15
скрипт автоматизированно поверил все содержимое что находится в папке "26" »
param(
$path = 'C:\26'
)cls

(gci -di $path).FullName|%{if(gci -rec -file $_|? length -ge 11kb)
{$_|Add-Content "$path\1.txt"} else{$_|Add-Content "$path\2.txt"}}

KOD65001
12-07-2020, 22:34
Fors1k, то что нужно! Спасибо! :applause:




© OSzone.net 2001-2012