Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - doc в docx

Ответить
Настройки темы
CMD/BAT - doc в docx

Аватара для Sisin

Старожил


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

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


Существует ли возможность командой для Microsoft Word конвертировать doc в docx?

Цель - Сделать bat-файл, помещая который в папку, все файлы doc, находящиеся в папке, конвертировались бы в в docx с удалением исходных doc в корзину.
Необходимость - Файлы docx занимают заметно меньше места.

Отправлено: 12:26, 01-06-2017

 

Ветеран


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

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


Цитата Sisin:
Существует ли возможность командой для Microsoft Word конвертировать doc в docx? »
Нет. Но можно попробовать сделать скрипт. Какой версии Office?

Цитата Sisin:
Необходимость - Файлы docx занимают заметно меньше места. »
Это сильно зависит от содержимого и используемого форматирования. Если это единственная цель — то лучше не стоит.

Отправлено: 14:02, 01-06-2017 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Какой версии Office? »
2010.

Цитата Iska:
Это сильно зависит от содержимого и используемого форматирования. Если это единственная цель — то лучше не стоит. »
В моем случае стоит. Одну папку вручную переделал 220 Мб -> 23 Мб. Большинство документов однотипные.

Отправлено: 14:38, 01-06-2017 | #3


Забанен


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

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


Sisin, doc и docx - принципиально разные форматы. docx - это zip-архив, содержащий файлы стилей, содержимого и так далее, представленные xml-файлами, в то время как doc - не является архивом; это бинарный файл с довольно-таки сложной структурой данных, разобрать которую на "голом" командном языке представляется возможным только в теории. А вот гибридная техника - CMD+WSH - вполне может сослужить службу конвертера doc в docx посредством COM, насколько помню, Word.Application.

Отправлено: 15:04, 01-06-2017 | #4


Аватара для yurfed

Ветеран


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

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


Цитата Iska:
Это сильно зависит от содержимого и используемого форматирования. »
Да это так, но попробуйте сохранить *.docx в ZIP, RAR по расширению и тд. Вы там увидите кучу xml файликов и прочего мусора. Это окажется обычный архив.
Вот и думайте сами, архивировать свою нужду или оставить всё, как оно есть.

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 15:35, 01-06-2017 | #5


Ветеран


Contributor


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

Профиль | Отправить 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


Аватара для Sisin

Старожил


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

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


Цитата megaloman:
Пропишите свои пути для папок. Входная и выходная папки могут совпадать. »
Благодарю. А подскажите, пожалуйста, как его сделать, так чтобы скрипт класть в папку с doc, запускать, и все бы doc в папке со скриптом конвертировались в docx с удалением doc?

Отправлено: 11:40, 02-06-2017 | #7


Ветеран


Contributor


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

Профиль | Отправить 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
Благодарности: 8086

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


Цитата Sisin:
как его сделать, так чтобы скрипт класть в папку с doc, запускать, »
Не делайте так. Это неправильный путь. Правильный путь — передавать путь к папке параметром скрипта. В том числе это подразумевает возможность просто перетащить папку на скрипт в Проводнике.

Отправлено: 15:19, 02-06-2017 | #9


Ветеран


Contributor


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

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


Iska, "В лоб" у меня не получилось: создал на раб столе ярлык на скрипт, пытаюсь затянуть на него папку - попытка копирования.
Получилось по другому: создал ярлык на
C:\Windows\System32\wscript.exe
затем изменил его - добавил параметр - полный путь скрипта
C:\Windows\System32\wscript.exe "Z:\Soft_In\я170602.vbs"
и уже когда затягиваю папку на этот ярлык - всё прекрасно работает.
Может быть можно сделать прямее?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 15:25, 02-06-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - doc в docx

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Сохранение документа из формата 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




 
Переход