Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
fedor-sg
1 / 1 / 0
Регистрация: 08.03.2012
Сообщений: 26
1

Можно ли средствами CMD создавать файлы MS Office?

29.11.2015, 16:58. Просмотров 1040. Ответов 8

Здравствуйте!

Пишу скрипт для автоматизации создания проектов, где вложены некие каталоги, внутри которых другие подкаталоги. В определенном каталоге хотелось бы автоматически создавать файлы Microsoft Office. Если возможно, то в свойствах документа дописывать при создании автора, название и тему.

Можно ли средствами CMD создавать файлы MS Office? Например, *.doc или *.xls? Если нельзя, то какие инструменты (скриптовые языки, например VBScript) для этого можно использовать?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2015, 16:58
Ответы с готовыми решениями:

Можно ли средствами cmd объединить однотипные XML-файлы в один?
Дано: очень много однотипных файлов xml вида: <?xml version="1.0"...

Можно ли реализовать функции COMDisable средствами cmd?
как вывести список используемых com портов, с указанием устройств?

Администрирование средствами cmd
Всем доброго времени суток. Я вобщем-то не админ, просто сейчас стоит насущная...

Как посредством CMD сравнить все файлы в заданной директории и удалить файлы с одинаковым содержимым?
В папке "папка" находятся текстовые файлы 1.txt 2.txt 3.txt 4.txt, некоторые из...

Не запускаются ни bat, ни cmd файлы...
Стоит WinXP SP3. В общем захожу в любой bat и cmd файл, а мне все время пишет:...

8
alpap
1806 / 1327 / 430
Регистрация: 26.04.2015
Сообщений: 4,537
29.11.2015, 19:04 2
Цитата Сообщение от fedor-sg Посмотреть сообщение
Можно ли средствами CMD создавать файлы MS Office?
- а что это в Вашем понимании. Вот например создание документа word:
Windows Batch file
1
2
3
@echo on
rem:>"C:\%date:~0,2%.%date:~3,2%.%date:~6,4%.docx"
pause
вроде средствами cmd да? Но без установленного Wordа (MS Office) этого не сделать, а внедрить в созданный выше документ
Цитата Сообщение от fedor-sg Посмотреть сообщение
автора, название и тему
вроде реально, не знаю как правда и скорее всего не средствами cmd.
1
Garry Galler
1824 / 1385 / 528
Регистрация: 28.10.2013
Сообщений: 3,532
30.11.2015, 13:33 3
Лучший ответ Сообщение было отмечено fedor-sg как решение

Решение

fedor-sg,
Чисто средствами cmd - нет. В комбинации со встроенными ЯП - да. Впрочем, подойдет любой скриптовый язык поддерживающий вызов COM объектов. Простая иллюстрация на гибриде bat+powershell:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<# :
  @echo off
rem переход в директорию батника    
    pushd "%~dp0"
rem запуск powershell, считывающего файл батника и получающего параметры для скрипта из cmd    
    powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -command ^
     "&{[ScriptBlock]::Create((cat '%~f0') -join [Char]10).Invoke(@(&{$args}%*))}"
rem   example: word.bat  qwerty.docx 'Титул документа' 'Тема' 'Автор документа' 'некий текст'
  exit /b
#>
 
param(
[Parameter(Mandatory=$True,Position=1)]
[string]$file,
[string]$title='',
[string]$subject='',
[string]$author='',
[string]$text=''
)
 
$word = new-object -com word.application  # получение COM объекта  Word - word должен быть установлен на компьютере
$doc = $word.documents.add()  # это создание нового документа
$doc.content.text = $text          # вставка текста
#$doc = $word.documents.Open($file) # а это открытие уже имеющегося документа
$doc.BuiltInDocumentProperties("Title").value    = $title
$doc.BuiltInDocumentProperties("Subject").value  = $subject
$doc.BuiltInDocumentProperties("Author").value   = $author
$doc.saveas([ref]($pwd.path +'\'+ $file))
$doc.close()
$word.quit()
Windows Batch file
1
2
:: вызов батника из cmd
word.bat  qwerty.docx 'Титул документа' 'Тема' 'Автор документа' 'некий текст'
То же самое - создание COM объекта Word (специфичным для языка методом) и работу с документом и его свойствами - можно сделать и на js\vbs\perl\python и т.д. так как объектная модель Word одна для всех языков.
3
greg zakharov
Покинул форум
2211 / 880 / 248
Регистрация: 07.05.2015
Сообщений: 1,761
30.11.2015, 16:38 4
Цитата Сообщение от alpap
Windows Batch file
1
2
3
@echo on
rem:>"C:\%date:~0,2%.%date:~3,2%.%date:~6,4%.docx"
pause
Начнем с того, что DOCX в сущности тот же ZIP, содержащий в себе набор XML документов, из этого следует, что
Цитата Сообщение от Garry Galler
Чисто средствами cmd - нет.
явно лукавит, ибо теоретически создать DOCX можно, если набивать XML'ки вручную, а потом пожать ZIP'ом. Также теоретически можно создать любой MS Office файл, если писать в файл побайтово, но это будет накладно по времени, так что действительно лучше смотреть в сторону использования WSH\PowerShell и иже с ними.
0
Garry Galler
30.11.2015, 17:34
  #5

Не по теме:

greg zakharov,
Я видел пример генерации docx из xml на PHP - там еще это возможно: создание именного непустого документа. Но на bat - как не извращайся - дальше пустого документа все равно трудно уйти. Утверждать прямо со 100% уверенностью не буду - но не похоже, что однажды кто-то все-таки захочет это попробовать. Поэтому не так уж сильно я лукавил :)

0
greg zakharov
30.11.2015, 17:42
  #6

Не по теме:

Garry Galler, разница как раз в возможности, а не в том захочет ли кто-то вообще за это браться. В теории - возможно, причем и без установленного офисного пакета.

0
volodin661
30.11.2015, 17:55
  #7

Не по теме:

Цитата Сообщение от greg zakharov Посмотреть сообщение
лучше смотреть в сторону использования WSH\PowerShell и иже с ними.
как справедливо отметил Garry G, для реализации создания .doc и .xls файлов
с помощью технологии OLE Automation ( Microsoft ), необходимо присутствие на компьютере
предустановленного MS Office, то есть его( Office ) надо купить, установить и после этого только
начинать экзерсисы.

Но есть и другие возможности, если забыть на ненадолго про xlsx и docx и вспомнить про xls и doc.

где-то в начале текущего века microsoft опубликовал некоторые данные про свой двоичный формат
OLE Compound Document для хранения и обмена офисными документами.

Файл в этом формате структурно представляет собой маленькую файловую систему, где роль каталогов и файлов
играют хранилища и потоки ( storage and streams ). Не углубляясь далее скажу, что Excel хранит свои двоичные даннее
под названием BIFF( этот формат вполне открыт, в отличие от doc), начиная с Excel-95, именно в OLE Compound Document.

Появились свободные сторонние библиотеки, позволяющие записывать xls этом формате вне зависимости
от наличия офисных приложений.

Так что на данный момент можно кросс-платформенно создавать xls-файлы на языках Python, Perl etc
Что касается xlsx-файлов, то и здесь имеются кросс-платформенные "C"-библиотеки для создания документов
и соответственно возможность делать это с помощью языков C, Perl, Lua, Python etc
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "xlsxwriter.h"
 
int main() {
 
    /* Create a new workbook and add a worksheet. */
    lxw_workbook  *workbook  = new_workbook("demo.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
 
    /* Add a format. */
    lxw_format *format = workbook_add_format(workbook);
 
    /* Set the bold property for the format */
    format_set_bold(format);
 
    /* Widen the first column to make the text clearer. */
    worksheet_set_column(worksheet, 0, 0, 20, NULL, NULL);
 
    /* Write some simple text. */
    worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
 
    /* Text with formatting. */
    worksheet_write_string(worksheet, 1, 0, "World", format);
 
    /* Writer some numbers. */
    worksheet_write_number(worksheet, 2, 0, 123,     NULL);
    worksheet_write_number(worksheet, 3, 0, 123.456, NULL);
 
    workbook_close(workbook);
 
    return 0;
}

0
Garry Galler
30.11.2015, 18:14
  #8

Не по теме:

volodin661,
Это все лишнее :) greg zakharov, убедил меня - в сферическом вакууме возможно все. Начал писать библиотеку генерации docx фалов на bat.

Кликните здесь для просмотра всего текста

Код
call :CreateDocx  "Имя документа"

:CreateDocx
call :Selection Range
call :TypeText "текст"
call :TypeParagraphs
call :Font Size 12
call :Font Name Arial

:Selection
...
~150 строк кода 

:TypeText
...
~150 строк кода

:TypeParagraphs
...
~150 строк кода

:Font
...
~150 строк кода

:AddPicture
...
~150 строк кода

:AddHyperlinks
...
~150 строк кода

еще 500 методов

Есть желающие продолжить? А то меня на большее не хватило...

0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
30.11.2015, 20:38 9
Цитата Сообщение от fedor-sg Посмотреть сообщение
В определенном каталоге хотелось бы автоматически создавать файлы Microsoft Office. Если возможно, то в свойствах документа дописывать при создании автора, название и тему.
Тут достаточно команды copy.
Создаете где-нибудь вручную шаблонный документ, прописываете ему нужные свойства, сохраняете.
Потом батником копируете куда угодно и сколько угодно раз:

Windows Batch file
1
copy "шаблон.doc" "папка\имя.doc"
0
30.11.2015, 20:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2015, 20:38

Можно ли создавать надстройки для продуктов MS Office
Подскажите, пожалуйста, можно ли создать надстройки для word в с#??? и если...

Можно ли с помощью ODBC создавать файлы dBase?
Подскажите с чего начать,чтобы научится создавать файлы dBase. Можно ли с...

Можно создавать текстовые файлы с названием, которое задаст пользователь?
можно создавать текстовые файлы с названием, которое задаст пользователь?


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

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

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