none
Удаления файлов RRS feed

  • Вопрос

  • Здравствуйте,

    Кто может помочь в написание вот такого скрипта :

    Задача:

    Проверять директорию каждый день Q:\Backup\*.csv и удалять файлы по такой схеме

    Удалять файлы старше 2 месяцев но оставлять файлы за предыдущие месяцы определенные дни (1,15,28,29,30,31)

    Заранее благодарен за помощь.


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    8 ноября 2012 г. 16:15

Ответы

  • Диск Q сетевой? - да сетевой ISCSI

    C:\Windows\system32>powershell -noexit -file C:\PS\clear_cards.ps1

    Windows PowerShell(C) Корпорация Майкрософт, 2009. Все права защищены.PS

    C:\Windows\system32>


    тоже самое файлы на месте


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    Я ошибся в условии,должно быть le,а не ge:

    Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item

    Тогда для диагностики вывод по этапно:

    1) Get-ChildItem Q:\Backup\*.csv

    2) Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day}

    3) Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item -Whatif

    • Помечено в качестве ответа MR.Minion 8 ноября 2012 г. 20:06
    8 ноября 2012 г. 19:59
    Отвечающий
  • 
    Get-ChildItem Q:\Backup -Recurse | Where {$_.PsIsContainer} | Get-ChildItem -Filter *.csv |
    	 Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item

    • Помечено в качестве ответа MR.Minion 9 ноября 2012 г. 6:00
    9 ноября 2012 г. 4:49
    Отвечающий

Все ответы

  • $date = (Get-Date).AddMonths(-2)
    $day = 1,15,28,29,30,31
    Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -ge $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item

    8 ноября 2012 г. 16:32
    Отвечающий
  • $date = (Get-Date).AddMonths(-2)
    $day = 1,15,28,29,30,31
    Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -ge $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item


    Создал файл clear_csv.ps1 , запускаю в конфсоли PS .\clear_csv.ps1 отрабатывает без ошибок но файлы не удаляет , перед выполнением сделал команду set-executionpolicy remotesigned (для выполнения самописных скриптов)

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    8 ноября 2012 г. 17:13
  • $date = (Get-Date).AddMonths(-2)
    $day = 1,15,28,29,30,31
    Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -ge $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item


    Создал файл clear_csv.ps1 , запускаю в конфсоли PS .\clear_csv.ps1 отрабатывает без ошибок но файлы не удаляет , перед выполнением сделал команду set-executionpolicy remotesigned (для выполнения самописных скриптов)

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    Запустите скрипт с параметром -noexit:

    powershell -noexit -file C:\script.ps1

    Требуется set-executionpolicy remotesigned  только один раз.

    Диск Q сетевой?

    8 ноября 2012 г. 19:28
    Отвечающий
  • Диск Q сетевой? - да сетевой ISCSI

    C:\Windows\system32>powershell -noexit -file C:\PS\clear_cards.ps1

    Windows PowerShell(C) Корпорация Майкрософт, 2009. Все права защищены.PS

    C:\Windows\system32>


    тоже самое файлы на месте


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    • Изменено MR.Minion 8 ноября 2012 г. 19:38
    8 ноября 2012 г. 19:31
  • Диск Q сетевой? - да сетевой ISCSI

    C:\Windows\system32>powershell -noexit -file C:\PS\clear_cards.ps1

    Windows PowerShell(C) Корпорация Майкрософт, 2009. Все права защищены.PS

    C:\Windows\system32>


    тоже самое файлы на месте


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    Я ошибся в условии,должно быть le,а не ge:

    Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item

    Тогда для диагностики вывод по этапно:

    1) Get-ChildItem Q:\Backup\*.csv

    2) Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day}

    3) Get-ChildItem Q:\Backup\*.csv | Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item -Whatif

    • Помечено в качестве ответа MR.Minion 8 ноября 2012 г. 20:06
    8 ноября 2012 г. 19:59
    Отвечающий
  • Получилось а как сделать чтобы скрипт проверял не корень папки а все под-папки директории Q:\Backup\

    Q:\Backup\

    dir1\*.cvs

    dir2\*.cvs

    итд ?


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    8 ноября 2012 г. 20:06
  • 
    Get-ChildItem Q:\Backup -Recurse | Where {$_.PsIsContainer} | Get-ChildItem -Filter *.csv |
    	 Where {$_.LastWriteTime -le $date -and $day -notcontains $_.LastWriteTime.Day} | Remove-Item

    • Помечено в качестве ответа MR.Minion 9 ноября 2012 г. 6:00
    9 ноября 2012 г. 4:49
    Отвечающий
  • Большое спасибо , и так и последний вопрос

    если я меняю параметр с 2 на 1 вот тут $date = (Get-Date).AddMonths(-1) , тогда останутся резервные копии за этот месяц и послед дни  1,15,28,29,30,31 каждого месяца ?


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    9 ноября 2012 г. 6:02
  • Большое спасибо , и так и последний вопрос

    если я меняю параметр с 2 на 1 вот тут $date = (Get-Date).AddMonths(-1) , тогда останутся резервные копии за этот месяц и послед дни  1,15,28,29,30,31 каждого месяца ?


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    Каждого месяца.
    9 ноября 2012 г. 6:08
    Отвечающий