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

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

JimmLight 27-01-2020 12:55 2907103

Удаление файлов папок из каталога
 
Скрипт на очистку каталогов (список путей к папкам указан в "clear.txt"). Список периодически пополняется
Далее, все папки, которые очищаются- записываются в log - C:\Temp\Success_delete.txt (формата "дд.мм.гггг | Success delete | \\share\blabla\")
Папки, которые не удалось очистить - записываются в log - C:\Temp\Fail_delete.txt (формата "дд.мм.гггг | Fail delete | \\share\blabla\")

Код:

import-csv C:\Temp\clear.txt | % {
    $path_change=$_.pathchange;
    $DST = Get-Date -Format "dd/MM/yyyy"
 Remove-Item $path_change -Recurse -Force -ErrorAction SilentlyContinue -Verbose
    if (Test-Path $path_change){
        "Fail $path_change" | out-file C:\Temp\Fail_delete.txt -Append
    }
    else{
        "$DST Success delete $path_change" | out-file C:\Temp\Success_delete.txt -Append
    }
}

Подсобите с добавлением проверки: Если каталог пустой, то писать в log.txt [формата "дд.мм.гггг | Empty folder | \\share\blabla\"

DJ Mogarych 28-01-2020 10:06 2907277

В целом как-то так, подредактируйте под себя.
Код:

$date = get-date -f "dd.MM.yyyy"
$dirs = dir D:\temp -Directory
foreach ($dir in $dirs) {
if ((dir $dir.fullname).count -eq 0) {
"$date | Empty folder | $($dir.FullName)" |Out-File d:\temp\log.txt -Encoding utf8 -Append
}
}


JimmLight 28-01-2020 11:48 2907295

Сделал так:

Код:

import-csv C:\Temp\clear.txt | % {
$path_change=$_.pathchange;
$date = get-date -f "dd.MM.yyyy"
Remove-Item $path_change -Recurse -Force -ErrorAction SilentlyContinue -Verbose
foreach ($path_change in $path_changes) {
                                                if ((dir $path_change.fullname).count -eq 0) {
                                                        "$date | Empty folder | $($path_change.FullName)" |Out-File C:\Temp\log.txt -Encoding utf8 -Append
                                                                                                  }
                                                if (Test-Path $path_change){
                                                        "Fail $path_change" | out-file C:\Temp\Fail_delete.txt -Append
                                                                                        }
                                                else{
                                                        "$DST Success delete $path_change" | out-file C:\Temp\Success_delete.txt -Append
                                                      }
                                                            }
                                                                    }

Но работает ни как надо.
Наверное я как то неверно исправил. Посодействуйте пожалуйста.
Т.е. нужно, чтобы создавалось три лога: 1. Если из папки удалились файлы; 2. Если папки пусты; 3. Если не удалось удалить из какой то папки какой либо файл.


Время: 11:29.

Время: 11:29.
© OSzone.net 2001-