|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск файлов из списка |
|
PowerShell - [решено] Поиск файлов из списка
|
Новый участник Сообщения: 11 |
Только недавно начал изучать powershell поэтому решаю задачи в силу своих знаний.
Подскажите как мне реализовать следующую задачу. Есть файл CSV в котором есть названия файлов (по одному на каждую стоку) и эти файлы надо найти в куче подпапок. Я вижу решение этой задачи следующим образом Читаем содержимое файла | foreach-object { Ищем каждый объект в подпапках | копируем файлы в нужное место } Начал делать и сразу же столкнулся с проблемой. cat patch\file.csv | foreach (get-childitem d:\folder\ -include $_ -recurse) Получаю ошибку ForEach-Object : Не удается преобразовать "System.Object[ ]" в тип "System.Management.Automation.ScriptBlock", необходимый для параметра "Process". Specified method is not supported Подскажите каким образом можно по конвееру передать строки из файла (если знаете уже готовые решения по такому вопросу - будит вообще замечательно) |
|
Отправлено: 15:19, 01-12-2010 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Разобрался надо было всего лишь поставить после foreach "- process"
Вот что получилось (содержимое файла ps1) cat ..\compare.csv | foreach -Process{get-childitem G:\CheckData\zakupka\ -include $_ -recurse | foreach -process {copy-item $_ G:\CheckData\zakupka_2\} } 1я строка - считываем информацию из файла 2я строка - ищим файлы в нужной папке (и подпапках) 3я строка - копируем эти файлы в нужную папку *Есть минус - если находит более одного экземпляра файла - второй не будет копировать (и выдаст ошибку, что файл уже существует) |
Отправлено: 17:51, 01-12-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать Добрый день,
Frenzy, тоже недавно изучаю Powershell $read = Get-Content .\test.csv $conv = Out-String -InputObject $read -Stream ForEach ($Str in $conv){ IF ( Get-ChildItem ".\$str" | Where-Object { $_.exists -eq "true"}) {Copy-Item -Path ".\$Str" -destination "C:\Documents...\PS\Destination"} else {"Файла не существует"}} Нужно бежать на электричку, завтра-после завтра посмотрю Frenzy, может файл в новое место переименовывать? староеимя_дата_время_копирования? - тогда точно будут разные файлы |
Отправлено: 18:21, 01-12-2010 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] сравнение списка файлов! | Kobzar | Скриптовые языки администрирования Windows | 7 | 06-07-2012 19:30 | |
C/C++ - Создание списка файлов | Albreht | Программирование и базы данных | 2 | 20-07-2009 01:17 | |
Интерфейс - [решено] Оптимизация открытия списка файлов в ХР | chickaboo | Microsoft Windows 2000/XP | 4 | 30-06-2008 18:11 | |
Создание списка и поиск по нему | haba-haba | Вебмастеру | 8 | 10-10-2007 14:10 | |
Обратный порядок списка файлов | Guest | Microsoft Windows 95/98/Me (архив) | 31 | 19-02-2004 00:07 |
|