Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск файлов exe и составление списка папок,без упоминания файлов. (http://forum.oszone.net/showthread.php?t=349173)

Shauniam 09-07-2021 06:05 2961769

Поиск файлов exe и составление списка папок,без упоминания файлов.
 
Windows 10 Домашняя.Этот скрипт нужен чтобы составить список папок E:\ в которых находятся exe-шники,чтобы с помощью другого скрипта- все эти указанные в списке папки перенести в одну папку E:\Programs .Почему нужен такой список где указаны только папки,без находящихся в них файлов?Это нужно чтобы скрипт переносил папки с находящимися в них файлами и не дублировал эти файлы при переносе в указанную общую папку.Как я знаю- скрипт который переносит папки с файлами,еще дублирует файлы вне папок,получается двойное перенесение файлов.Надеюсь хорошо объяснил задачу-просьбу.ведь как я понял из предыдущих тем что программисты любят(как "хлеб") конкретные задачи.Учусь на ошибках.Если что нужно уточнить,спрашивайте.

Elven 09-07-2021 09:18 2961780

Код:

Get-ChildItem -Path E:\ -Recurse *.exe | Select-Object Directory | Sort-Object -Unique
просто список, просто выводится на экран. для того чтобы переносить нужно будет соблюсти уйму условий. Первое что приходит в голову это структура приблизительно такая:
Скрытый текст
Код:

├── dir1
│  ├── dir2
│  │  ├── file1.exe
│  │  ├── dir3
│  │  │  └── file2.exe
│  │  ├── file3.exe
│  │  ├── file4.exe
│  │  └── dir4
│  │      └── dir5
│  │          ├── dir6
│  │          │  ├── file5.exe
│  │          │  └── file6.exe
│  │          └── dir7
│  │              └── file7.exe
│  ├── file.exe


т.е. в списке будет
dir1
dir1\dir2
dir1\dir2\dir3
dir1\dir4\dir5\dir6
dir1\dir4\dir5\dir7
А по факту нужно будет переносить целиком dir1.
Учитывая что дело происходит (как я понимаю) на домашнем компьютере, то скорей всего работа такая - одноразовая, или, по крайней мере, не слишком частая. При наличии списка лучше перенести папки руками.

megaloman 09-07-2021 12:24 2961794

Код:

@Echo Off
cls
>nul Chcp 1251

        Set "BoxIn=Z:"
rem        Set "BoxIn=Z:\Soft_In"

        >"%~dpnx0.log" (FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\" /S /B /A:D`) DO If Exist "%%d\*.exe" Echo "%%d")
pause
Exit /B 0

Результат - в текстовом файле ИмяБатФайла.bat.loq
Нарисовал ответ на Ваш предыдущий вопрос

DJ Mogarych 09-07-2021 12:49 2961796

Powershell
Код:

$paths = dir 'E:\' -Recurse -Filter '*.exe' |? Directory -notmatch 'E:\\Programs' |sort Directory -Unique

$paths |% {
    if ($_.Directory.Parent.FullName -notin $paths.Directory.FullName) {
    mv "$($_.Directory.FullName)" "E:\Programs" -Force -Confirm:$false -WhatIf
    }
}

-WhatIf выдаёт список, если его убрать - будет реально переносить.


Время: 23:53.

Время: 23:53.
© OSzone.net 2001-