Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
1

Сканирование определённой папки на наличие XLSX-файлов и пересохранение найденных в другую папку

13.03.2015, 11:23. Просмотров 1552. Ответов 4
Метки нет (Все метки)

Добрый день. Задача у меня стоит следующая, нужно просканировать определенную папку на наличие *.xlsx файлов, после этого открывать каждый по очереди и пересохранять в соседнюю папку. На данный момент готово следующее:
Сканирует папку и сохраняет результат в переменную
PowerShell
1
$file = Get-ChildItem -Path E:\excel\in\ | Where {$_.extension -eq ".xlsx"}
А также открывает указанный в коде файл и пересохраняет его в соседнюю папку
PowerShell
1
2
3
4
5
6
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$WorkBook = $Excel.Workbooks.Open("E:\excel\in\1.xlsx")
$WorkBook.SaveAs("E:\excel\out\1.xlsx")
$workbook.Close()
$Excel.Quit()
Вот только как правильно соединить эти два куска кода + сделать цикл по всем файлам в папке я что-то не могу найти инфы.
Заранее спасибо!

Добавлено через 22 часа 24 минуты
Сам разобрался с этой штуковиной, только непонятно почему при закрытии экселя он закрывается с ошибкой (версия 2010). Пробовал писать и так - "$Excel.Application.Quit()" и так "$Excel.Quit()"
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$Excel = New-Object -ComObject Excel.Application
#$Excel.Visible = $true
$file = Get-ChildItem -Path E:\excel\in\ | Where {$_.extension -eq ".xlsx"}
 
for ($i = 0; $i -lt $file.Count ; $i++)
{ 
 $one = $file[$i]
 $WorkBook = $Excel.Workbooks.Open("E:\excel\in\$one")
 $WorkBook.SaveAs("E:\excel\out\$one")
 $workbook.Close()
}
$Excel.Application.Quit()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2015, 11:23
Ответы с готовыми решениями:

Список найденных файлов (сканирование на наличие)
Здравствуйте дорогие форумчане. Помогите с кодом по VB.Net. Работаю в Visual Studio 2013...как...

Сканирование папки на наличие поврежденных файлов
Ребят,нужно реализовать прогу,в которой юзер выбирает папку и сканит на наличие типа поврежденных...

Копирование файлов из папки в другую папку с заменой
Хочу для автообновления сделать копирование из папки Update в папку с .exe. Thread UPDcenter =...

Выбрать из папки несколько типов файлов и скопировать в другую папку
Необходимо выбрать из папки файлы с расширением docx, pdf, rar и скопировать их в другую папку....

4
0 / 0 / 0
Регистрация: 25.03.2015
Сообщений: 2
25.03.2015, 21:29 2
У меня Excel не падает (проверял на 2007 и 2013), при выполнении $Excel.Application.Quit() на самом деле процесс Excel не убивается и висит в диспетчере задач. Здесь описан этот момент. Добавьте в конец строчку:
PowerShell
1
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
27.03.2015, 16:14  [ТС] 3
У меня просто 2010 Excel и выпадает всегда ошибка что прекращена работа программы. Попробую тогда добавить ещё эту строчку и посмотрю что получится. Спасибо!
0
14 / 11 / 1
Регистрация: 04.06.2014
Сообщений: 37
31.03.2015, 07:18 4
Цитата Сообщение от ScRe@m Посмотреть сообщение
открывать каждый по очереди и пересохранять в соседнюю папку
может я чего не понял... но, если никаких действий внутри файла нет, не проще ли:
PowerShell
1
2
$File = Get-ChildItem -Path E:\excel\in\ | Where {$_.extension -eq ".xlsx"}
$File | % {Copy-Item E:\excel\in\$_ -Destination E:\excel\out\ -Force}
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
31.03.2015, 10:32  [ТС] 5
Действия в файле происходят, excel файлы были сделаны через программу-конвертер с pdf в excel, и файлы так сказать немного неполные, поэтому приходится их открывать в экселе и пересохранять по-новому.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2015, 10:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Копирование файлов из определённой папки в папку, названную по номерам года и недели с начала года
Доброго времени суток! Необходимо копировать файлы из конкретной папки в папку, путь к которой...

Перемещение всех файлов из каждой подпапки одной папки в другую папку и их переименование
Добрый день! Прошу помощи, нужен батник или скрипт, который перемещал бы файлы из...

Копирование всех файлов с заданным расширением из одной заданной папки в другую заданную папку
Создайте командный файл, который копирует все файлы с расширением, заданным в качестве первого...

Поиск чисел в файлах в папке и копирование найденных в другую папку
Добрый день есть вопросик,есть папка в ней много файлов, в которых есть такая часть кода...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.