|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD/BAT Пакетное подписание word документов |
|
CMD/BAT - CMD/BAT Пакетное подписание word документов
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Здравствуйте. Прошу вашей помощи с доработкой скрипта. Нужно сохранить большое количество word документов в формат pdf и подписать их электронной подписью с сохранением структуры каталогов.
Мой скрипт пересохраняет и подписывает файлы, но слаживает все подписанные файлы в один каталог, а нужно сохранить структуру каталогов @chcp 1251 rem @echo off set "proga=c:\Program Files\PDF24\pdf24-DocTool.exe" set "dir_in=d:\input" set "dir_out=d:\out" if not exist "%dir_out%" md "%dir_out%" for /f "delims=" %%a in ('dir /a-d/b/s "%dir_in%\*.docx"') do "%proga%" -applyProfile -profile "default/good" -outputDir "%dir_in%" -convertToPDF "%%a" for /f "delims=" %%a in ('dir /a-d/b/s "%dir_in%\*.doc"') do "%proga%" -applyProfile -profile "default/good" -outputDir "%dir_in%" -convertToPDF "%%a" for /f "delims=" %%a in ('dir /a-d/b/s "%dir_in%\*.xlsx"') do "%proga%" -applyProfile -profile "default/good" -outputDir "%dir_in%" -convertToPDF "%%a" for /f "delims=" %%a in ('dir /a-d/b/s "%dir_in%\*.pdf"') do ( "%proga%" -profile "default/good" -outputDir "%dir_out%" -join "%%a" "f:\distributives\пакетное подписание файлов\Подпись.pdf" move /y "%dir_out%\*.*" "%%a" if exist "%dir_out%\input.pdf" del /f /q "%dir_out%\input.pdf" ) "c:\Program Files (x86)\Crypto Pro\PDF\cppdfutil.exe" sign -i "%dir_in%" -o "%dir_out%" -c "f:\distributives\пакетное подписание файлов\Сертификат.cer" rem rd /s /q "%dir_in%" rem md "%dir_in%" copy "f:\distributives\пакетное подписание файлов\bat.bat.lnk" "%dir_in%\bat.bat.lnk" |
|
Отправлено: 19:22, 31-05-2024 |
fascinating rhythm Сообщения: 6569
|
Профиль | Отправить PM | Цитировать Можно так попробовать (Powershell). Не проверял, поэтому могут быть ошибки.
Также, я не знаю, умеет ли cppdfutil.exe обрабатывать каталог рекурсивно, поэтому предположил, что нет. $dir_in = "d:\input" $dir_out = "d:\out" $proga = "c:\Program Files\PDF24\pdf24-DocTool.exe" $cppdfutil = "c:\Program Files (x86)\Crypto Pro\PDF\cppdfutil.exe" $sign = "f:\distributives\пакетное подписание файлов\Подпись.pdf" $cert = "f:\distributives\пакетное подписание файлов\Сертификат.cer" $files = dir $dir_in -Recurse -Include "*.doc*","*.xls*" # Создание структуры каталогов в конечном и временных каталогах $dir_in_regex = $dir_in -replace '\\','\\' $dir_pdfs = "$env:TEMP\pdf_converted" $dir_joined = "$env:TEMP\pdf_joined" $subdirs = ($files.DirectoryName |sort -Unique) -replace "$dir_in_regex" $subdirs |% { "$dir_out$_","$dir_pdfs$_","$dir_joined$_" |% { mkdir $_ -Force -ErrorAction SilentlyContinue > $null } } # Конвертация в PDF (во временный каталог 1) $files |% { $dir_out_file = $_.DirectoryName -replace "$dir_in_regex","$dir_pdfs" & $proga -applyProfile -profile "default/good" -outputDir $dir_out_file -convertToPDF $_.FullName } # Подпись.pdf (во временный каталог 2) $pdfs = dir $dir_pdfs -Recurse $dir_in_regex = $dir_pdfs -replace '\\','\\' $pdfs |% { $dir_out_file = $_.DirectoryName -replace "$dir_in_regex","$dir_joined" & $proga -profile "default/good" -outputDir $dir_out_file -join $_.FullName $sign } # Цифровая подпись (в конечный каталог) $subdirs |% { & $cppdfutil sign -i "$dir_joined$_" -o "$dir_out$_" -c $cert } # Удаление временных каталогов del $dir_pdfs,$dir_joined -Recurse -Force -Confirm:$false |
------- Последний раз редактировалось DJ Mogarych, 02-06-2024 в 09:22. Отправлено: 07:14, 02-06-2024 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать DJ Mogarych,
Спасибо за помощь! Скрипт выдает: del : Не удается найти путь "C:\Users\Пользователь\AppData\Local\Temp\pdf_joined", так как он не существует. F:\distributives\пакетное подписание файлов\bat1.ps1:35 знак:1 + del $dir_joined -Recurse -Force -Confirm:$false + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Users\Пользо...Temp\pdf_joined:String) [Remove-Item], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand сохраняет конвертированные в PDF файлы в каталоге input(неподписанные цифровой подписью), файлы без структуры каталогов, одним списком. Папка out пустая |
Отправлено: 07:49, 02-06-2024 | #3 |
fascinating rhythm Сообщения: 6569
|
Профиль | Отправить PM | Цитировать Понятно, я думал, что pdf24-DocTool.exe в ту же папку кладёт.
Пробуйте, выше исправленный код. |
------- Отправлено: 09:21, 02-06-2024 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать останавливается с ошибкой
|
|
Отправлено: 20:17, 02-06-2024 | #5 |
fascinating rhythm Сообщения: 6569
|
Профиль | Отправить PM | Цитировать Похоже, что у вас файл скрипта в неправильной кодировке сохранён.
Откройте Powershell ISE, вставьте туда код и сохраните скрипт. |
------- Отправлено: 09:05, 03-06-2024 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Привилегии bat/cmd файла запущенного из другого cmd/bat файла | leospb | Скриптовые языки администрирования Windows | 2 | 03-09-2023 12:57 | |
CMD/BAT - Пакетное переименование файлов(.jpg) в разных папках (BAT) | Zharkyn | Скриптовые языки администрирования Windows | 4 | 10-08-2020 11:43 | |
CMD/BAT - CMD/BAT Поиск по каталогам файлов bat и конвертирование их в JPEG | freerider1989 | Скриптовые языки администрирования Windows | 1 | 18-04-2016 08:37 | |
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле | InVariable | Скриптовые языки администрирования Windows | 4 | 22-05-2015 20:06 | |
CMD/BAT - [решено] Пакетное преобразование данных с помощью cmd | Tosyk | Скриптовые языки администрирования Windows | 22 | 26-11-2010 14:13 |
|