Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


antivan, в составе Офиса версии примерно с 2007 есть встроенный конвертер excelcnv.exe, и париться с ком-объектом Экселя уже не нужно, выше в теме было написано об этом.

Вот вариант с конвертацией и автоматическим удалением оригиналов.
Можно вставить в планировщик и запускать через определённые промежутки времени.
Проверки перед удалением оригиналов можно ещё навертеть какие угодно.
Код: Выделить весь код
# Папка с файлами .xls
$folder = "C:\temp"
# Путь до конвертера
$converter = "C:\Program Files\Microsoft Office\root\Office16\excelcnv.exe"

# Запускать процесс только если в папке есть файлы .xls
if ($files = dir $folder -Include "*.xls" -Recurse) {
    # Конвертировать
    $files |% {
        & $converter -oice "$($_.FullName)" "$($_.FullName + "x")"
    }
    # Ожидание завершения процессов конвертации
    do {
        sleep 5
    } while (get-process excelcnv -ErrorAction SilentlyContinue)
    # Удалить оригинал, если есть соответствующий файл .xlsx и он не нулевого размера
    dir $folder -Include "*.xlsx" -Recurse |% {
        $xls = "$($_.DirectoryName)\$($_.basename).xls"
        if ($_.Length -ne 0 -and (Test-Path $xls)) {
            del $xls
        }
    }
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 12-07-2025 в 20:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:43, 12-07-2025 | #22