CMD/BAT - doc в docx
|
Старожил Сообщения: 345 |
Существует ли возможность командой для Microsoft Word конвертировать doc в docx?
Цель - Сделать bat-файл, помещая который в папку, все файлы doc, находящиеся в папке, конвертировались бы в в docx с удалением исходных doc в корзину. Необходимость - Файлы docx занимают заметно меньше места. |
|
Отправлено: 12:26, 01-06-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
Цитата Sisin:
|
||
Отправлено: 14:02, 01-06-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:38, 01-06-2017 | #3 |
Забанен Сообщения: 793
|
Sisin, doc и docx - принципиально разные форматы. docx - это zip-архив, содержащий файлы стилей, содержимого и так далее, представленные xml-файлами, в то время как doc - не является архивом; это бинарный файл с довольно-таки сложной структурой данных, разобрать которую на "голом" командном языке представляется возможным только в теории. А вот гибридная техника - CMD+WSH - вполне может сослужить службу конвертера doc в docx посредством COM, насколько помню, Word.Application.
|
Отправлено: 15:04, 01-06-2017 | #4 |
Ветеран Сообщения: 20133
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Вот и думайте сами, архивировать свою нужду или оставить всё, как оно есть. |
||
------- Отправлено: 15:35, 01-06-2017 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sisin,
Тупо написал VBS-скрипт с макросом для Word. Особенно не "вылизывал", если среди Doc есть увечные файлы, возможны проблемы
BoxIn = "Z:\Box_In" BoxOut = "Z:\Box_Out" Set RegMaska = New RegExp RegMaska.Pattern = "^.*\.doc$" RegMaska.IgnoreCase = True Set FSO = CreateObject("Scripting.FileSystemObject") Set Folds = FSO.GetFolder(BoxIn) Set Files = Folds.Files Set WD = CreateObject("Word.Application") With WD .Visible = True For Each jF In Files If RegMaska.Test(jF) Then FileIn = BoxIn + "\" + FSO.GetBaseName(jF) + ".doc" FileOut = BoxOut + "\" + FSO.GetBaseName(jF) + ".docx" If Not FSO.FileExists(FileOut) Then Call .Documents.Open(FileIn, False, False, False, "", "", False, "", "", 0, "") Call .ActiveDocument.SaveAs2(FileOut, 12, False, "", True, "", False, False, False, False, False, , , , , , 14) .ActiveWindow.Close If FSO.FileExists(FileOut) Then FSO.DeleteFile (FileIn) Else MsgBox "Файл" + vbCrLf + FileOut + vbCrLf + "Уже существует" + vbCrLf + vbCrLf + "поэтому файл" + vbCrLf + FileIn + vbCrLf + "Не преобразовываем" End If End If Next .Quit End With |
------- Последний раз редактировалось megaloman, 02-06-2017 в 16:16. Отправлено: 22:10, 01-06-2017 | #6 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 11:40, 02-06-2017 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать как его сделать, так чтобы скрипт класть в папку с doc, запускать, и все бы doc в папке со скриптом конвертировались в docx с удалением doc
Set Shell = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set Arg = WScript.Arguments If Arg.Count <> 0 Then BoxIn = Arg(0) Else BoxIn = Shell.CurrentDirectory End If If Right(BoxIn,1) <> "\" Then BoxIn=BoxIn+"\" If Not FSO.FolderExists(BoxIn) Then MsgBox "Папка" + vbCrLf + vbCrLf + BoxIn + vbCrLf + vbCrLf + "не найдена" WScript.Quit End If BoxOut = BoxIn Set RegMaska = New RegExp RegMaska.Pattern = "^.*\.doc$" RegMaska.IgnoreCase = True Set Folds = FSO.GetFolder(BoxIn) Set Files = Folds.Files Set WD = CreateObject("Word.Application") With WD .Visible = True For Each jF In Files If RegMaska.Test(jF) Then FileIn = BoxIn + FSO.GetBaseName(jF) + ".doc" FileOut = BoxOut + FSO.GetBaseName(jF) + ".docx" If Not FSO.FileExists(FileOut) Then Call .Documents.Open(FileIn, False, False, False, "", "", False, "", "", 0, "") Call .ActiveDocument.SaveAs2(FileOut, 12, False, "", True, "", False, False, False, False, False, , , , , , 14) .ActiveWindow.Close If FSO.FileExists(FileOut) Then FSO.DeleteFile (FileIn) Else MsgBox "Файл" + vbCrLf + FileOut + vbCrLf + "Уже существует" + vbCrLf + vbCrLf + "поэтому файл" + vbCrLf + FileIn + vbCrLf + "Не преобразовываем" End If End If Next .Quit End With |
------- Отправлено: 14:55, 02-06-2017 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
|
|
Отправлено: 15:19, 02-06-2017 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Iska, "В лоб" у меня не получилось: создал на раб столе ярлык на скрипт, пытаюсь затянуть на него папку - попытка копирования.
Получилось по другому: создал ярлык на C:\Windows\System32\wscript.exe затем изменил его - добавил параметр - полный путь скрипта C:\Windows\System32\wscript.exe "Z:\Soft_In\я170602.vbs" и уже когда затягиваю папку на этот ярлык - всё прекрасно работает. Может быть можно сделать прямее? |
------- Отправлено: 15:25, 02-06-2017 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Сохранение документа из формата docx в doc, без потери формул | xfinity | Microsoft Office (Word, Excel, Outlook и т.д.) | 14 | 21-03-2015 22:13 | |
Интерфейс - [решено] Решил уменьшить место путем преобразования старых *.doc в *.docx однако их очень мно | yurka45pacan@vk | Microsoft Windows 8 и 8.1 | 4 | 09-03-2014 12:37 | |
DOCX Recovery Free 1.0 | OSZone Software | Новости программного обеспечения | 0 | 27-09-2011 17:30 | |
Batch DOC and DOCX Converter 2010.2.606.1411 | OSZone Software | Новости программного обеспечения | 0 | 07-06-2010 00:30 | |
Офис и Текст - Программы для конвертирования DOCX в DOC | thief_89 | Программное обеспечение Windows | 1 | 13-08-2007 14:53 |
|