Войти

Показать полную графическую версию : Удаление файлов папок из каталога


JimmLight
27-01-2020, 12:55
Скрипт на очистку каталогов (список путей к папкам указан в "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
В целом как-то так, подредактируйте под себя.

$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
Сделал так:

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. Если не удалось удалить из какой то папки какой либо файл.




© OSzone.net 2001-2012