![]() |
Удалить файлы по спискам, содержащимся в нескольких *.lst
В папке MainFldr (и во вложенных в нее подпапках) нужно удалить (лучше в корзину) файлы по спискам, содержащимся во всех *.lst из папки LstFldr.
Другими словами: В папке LstFldr есть несколько десятков *.lst , каждый из которых содержит список файлов, подлежащих удалению (ФПУ) из папки MainFldr (и из вложенных в нее подпапок). Других файлов в папке LstFldr нет. В *.lst имена ФПУ представлены без адресов; по одному на строку (пустых и посторонних строк нет), могут повторяться в различных *.lst. Все ФПУ только с цифрами и EN-буквами в именах, с расширениями. ФПУ (и/или содежащие их папки) могут быть с атрибутами +H, +S, +R. ФПУ могут повторяться в папке MainFldr (и во вложенных в нее подпапках). Хотелось бы также вывести в файл Deleted.lst список удаленных файлов (с их полными адресами до удаления), а в файл NonDeleted.lst вывести список ФПУ, которые так и не удалились (с их полными адресами). (OS: WinXP SP3) |
Цитата:
Цитата:
Цитата:
|
Вложений: 1
смоделировал ситуацию как-то так
|
На PowerShell это может выглядеть, например, так:
Скрытый текст
Код:
$sListFolder = 'C:\Мои проекты\0235\SomethingLikeThis\LstFldr' |
Iska, передать весь список искомых файлов через Include в Get-ChildItem - интересная идея - я её не думал - возьму на заметку. Спасибо.
P.S. ну и традиционное про лютый трэш и угар: если вы раскрашиваете сообщения исходя из их разной ценности - используете стандартные Write-Debug, Write-Verbose, Write-Info - они и сами раскрасят, и ими можно извне хоть как-то управлять но вообще, это бесполезное самолюбование - как в кино: по экрану бежит куча текста который никто не читает и в принципе не в состоянии прочитать и проанализировать. Лучше бы уж тогда Write-Progress впилили заворачивать всё в глобальные if - ну так себе подход неудобно отслеживать к чему относится закрывающая скобка и else - разверните условие и сделайте выход сразу после if .Net библиотеки не знают ничего про PSdisk, поэтому ваши скритпы невозможно тестировать стандартным Pester метод файлового объекта Delete() вместо Remove-Item - тоже та ещё засада - я не могу в начале скрипта к примеру написать $PSDefaultParameterValues.Add("Remove-Item:WhatIf",$True) и посмотреть: что же происходит |
Цитата:
|
CMD тоже можно. Была проблема с атрибутами файлов.
Код:
@Echo Off |
Цитата:
|
megaloman, большое спасибо. То, что надо. Основную задачу батник выполняет.
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Код:
edit:< powershell.exe -File "C:\Мои проекты\0235\0003.ps1" Цитата:
Цитата:
Цитата:
|
Время: 19:20. |
Время: 19:20.
© OSzone.net 2001-