Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/76: Рейтинг темы: голосов - 76, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
1

Поиск в папке недавно измененных файлов

18.11.2014, 18:55. Показов 14912. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
У меня есть задание с помощью PowerShell создать скрипт, который бы искал в папке(указываем папку) недавно измененные файлы.
С PowerShell ни разу не работал, и даже не представляю, как это сделать.
Не могли бы вы помочь написать такой скрипт?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2014, 18:55
Ответы с готовыми решениями:

Список измененных файлов и папок
Написать скрипт, который будет мониторить все изменения сделанные под пользователем(создал...

Написать скрипты на PowerShell (.ps1) 1.Нахожденияе числа Фибоначчи по номеру 2.Вывод измененных файлов каталога
Здравствуйте, нужна помощь в написании двух скриптов на PowerShell (расширение .ps1) 1. Выведите...

Поиск в папке и подпапках файлов, созданных или измененных за определенную дату
Есть папка(D:\wscom). В ней лежат файлы, папки, подпапки. на форме текстовое поле(для ввода даты...

Поиск и копирование только измененных файлов
Вот есть такой код: SET f=%~dp0 ::Сканирование ветки реестра КонсультантПлюс. В ней...

9
7 / 7 / 2
Регистрация: 19.05.2014
Сообщений: 62
19.11.2014, 08:52 2
можем помочь, только нужна более четкая задача, что значит недавно изменены? какие критерии отбора? за какой переуд надо просматривать изменения?
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
19.11.2014, 09:38  [ТС] 3
Ну, например есть группа файлов(любые, например текстовые), несколько из них были открыты и изменены. И скрипт должен будет выдать эти файлы(к примеру, были изменены день назад).
В принципе, диапазон не должен быть большим. Максимум день-два.
Если все равно не понятно, скажите, попробую попроще)
0
7 / 7 / 2
Регистрация: 19.05.2014
Сообщений: 62
19.11.2014, 09:50 4
Лучший ответ Сообщение было отмечено lord_commander как решение

Решение

вот пример скрипта как я понял по вашей задачи.
Получаем список всех файлов в указанной папке и подпапках, которые были изменены в переуд
от текущей даты -2 дня.
PowerShell
1
Get-ChildItem "c:\log" -Recurse | where-object {$_.LastWriteTime -gt ((Get-Date).adddays(-2))}
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
19.11.2014, 10:11  [ТС] 5
То что надо!
Премного благодарен! =)
0
1 / 1 / 0
Регистрация: 21.07.2016
Сообщений: 4
21.07.2016, 09:18 6
Очень полезно. Но возникла проблема. Некоторые возвращаемые строки могут быть длиннее 80 символов. При вызове скрипта по расписанию хвост переносится на следующую строку и идентифицировать файл не удается.
Код
-a---        21.07.2016      2:14  317277696 2013_bp_rassvet_db_201607210213.BA
                                             K
Можно ли увеличить длину до 90-100 символов или при формировании удалять ненужные пробелы, чтобы уместиться в 80?
1
7 / 7 / 2
Регистрация: 19.05.2014
Сообщений: 62
22.07.2016, 14:05 7
Ограничений по символам нет, скорей всего вы имеете ввиду вывод на экран вашего результата.
попробуйте вывести результат в файл или переменную далее посмотрите что получилось.
0
1 / 1 / 0
Регистрация: 21.07.2016
Сообщений: 4
26.07.2016, 15:05 8
Я запускаю задание по расписанию, bat файл
Windows Batch file
1
powershell -executionPolicy bypass  -file "x:\backup\bin\sql_to_NAS\file_list.ps1" |qgrep -e "-a--" |cut -b 46-80 > file_list.tmp
file_list.ps1:
PowerShell
1
Get-ChildItem "x:\backup\sql" -Recurse | where-object {$_.LastWriteTime -gt ((Get-Date).adddays(-1))}
получаю:
Код
2013_zup_rassvet_607210228.BAK    
2013_zup_StroyTechUral_607210228.B
2013_zup_UdKomfort_607210229.BAK
Если запускать тот же bat-ник, например, из FAR, все имена полные.

Добавлено через 40 минут
Здесь неточность, следует "cut" в батнике читать:
Windows Batch file
cut -d " " -f 18
0
7 / 7 / 2
Регистрация: 19.05.2014
Сообщений: 62
27.07.2016, 09:54 9
Все работает корректно.

PowerShell
1
2
3
4
5
Get-ChildItem "c:\log" -Recurse | where-object {$_.LastWriteTime -gt ((Get-Date).adddays(-1))}
 
Mode                LastWriteTime     Length Name                                                          
----                -------------     ------ ----                                                          
-a---        22.07.2016     14:00          0 2013_zup_StroyTechUral_607210228.BAK
Если вы хотите запускать скрипт PS с помощью CMD.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
SetLocal EnableExtensions
 
set "ps=" & for %%X in (powerShell.exe) do set "ps=%%~$PATH:X"
if not defined ps set "ps=%systemRoot%\system32\windowsPowerShell\v1.0\powerShell.exe"
 
For /F "UseBackQ delims=" %%a in (`"cmd /c "
  "%ps%" -ExecutionPolicy ByPass -NoProfile -command "x:\backup\bin\sql_to_NAS\file_list.ps1"
""`) do (
  echo %%a
)
Добавлено через 8 минут
И почему вы Задание по расписанию сразу не запускаете Powershell скрипт.

Windows Batch file
1
PowerShell.exe -noprofile -command x:\backup\bin\sql_to_NAS\file_list.ps1
И если вам необходимо результат записать в файл то почему это сделать в сама скрипте?
0
1 / 1 / 0
Регистрация: 21.07.2016
Сообщений: 4
27.07.2016, 13:08 10
Спасибо, проблема была в параметрах командного окна. Надо создать ярлык к bat-файлу и в его свойствах, закладка "Расположение", задать требуемые ширину буфера экрана и окна. По "at ..." вызывается этот ярлык.

Добавлено через 50 минут
Там еще много чего делается - доформирование списка, архивирование по этому списку, подключение и перенос архива в NAS.
0
27.07.2016, 13:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2016, 13:08
Помогаю со студенческими работами здесь

Как найти названия файлов в текстовом файле, а потом осуществить поиск в папке файлов по этим именам?
Здравствуйте. Подскажите, пожалуйста. У меня есть текстовый файл, где находятся имена файлов и...

Поиск файлов в папке
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { string files =...

Поиск файлов в папке
Добрый день, программа должна добавить файл в папку с номерным знаком (пример: 001,002,003…00n;) ...

Поиск файлов в папке
Здравствуйте! Если не сложно помогите мне вот с этим: Стоит задача найти файлы в папке для их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru