|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переименование файлов .doc в .docx |
|
|
CMD/BAT - Переименование файлов .doc в .docx
|
Пользователь Сообщения: 106 |
Прошу помощи, нужен скрипт для переименования файлов.
К нам периодически поступают файлы docx, но с расширением doc. Поэтому необходим cmd файл для переименования. Нечто похожее на такое: Но необходимо добавить проверки для переименования: - расширение файла doc - первые два символа в содержимом файла "PK", чтобы убедиться что это действительно docx для того чтобы не переименовывались ненужные файлы. |
|
Отправлено: 10:46, 06-08-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Falcon99:
На PowerShell: Скрытый текст
Param ( [System.String]$sSourceFile ) if([System.IO.File]::Exists($sSourceFile)) { if(([System.IO.FileInfo]$sSourceFile).Extension -eq '.doc') { $oFileStream = [System.IO.File]::OpenRead($sSourceFile) $bPKFound = $oFileStream.ReadByte() -eq 0x50 -and $oFileStream.ReadByte() -eq 0x4B $oFileStream.Close() if($bPKFound) { [System.IO.File]::Move($sSourceFile, $sSourceFile + 'x') Write-Host "Rename source file [$sSourceFile] into [$($sSourceFile)x]." -ForegroundColor Green } else { Write-Host "Source file [$sSourceFile] probably not a DOCX file with DOC extension." -ForegroundColor Red } } else { Write-Host "Source file [$sSourceFile] must has a DOC extension." -ForegroundColor Red } } else { Write-Host "Can't find source file [$sSourceFile]." -ForegroundColor Red } |
|
Отправлено: 14:53, 06-08-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
|
||
Отправлено: 15:33, 06-08-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Falcon99:
Цитата Falcon99:
Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile=%~1 if defined sSourceFile ( if exist "%sSourceFile%" ( if "%~x1" equ ".doc" ( <"%sSourceFile%" set /p sVar= if defined sVar if "!sVar:~0,2!" equ "PK" ( ren "%sSourceFile%" "%~nx1x" echo Rename source file [%sSourceFile%] into [%sSourceFile%x]. ) else ( echo Source file [%sSourceFile%] probably not a DOCX file with DOC extension. exit /4 ) ) else ( echo Source file [%sSourceFile%] must has a DOC extension. exit /b 3 ) ) else ( echo Can't find source file [%sSourceFile%]. exit /b 2 ) ) else ( echo Usage: "%~nx0" ^<Source file^> exit /b 1 ) endlocal exit /b 0 Могут быть определённые проблемы при попытке чтения текста из двоичного файла. Имейте это в виду и не удивляйтесь, ежели не на всех файлах будет работать. |
||
Отправлено: 16:37, 06-08-2018 | #4 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Благодарю, именно то что надо. На всякий случай заберу оба варианта.
На другом форуме мне предложили такой вариант решения: Как вы думаете, какой вариант более правильный и работоспособный? |
|
Отправлено: 17:04, 06-08-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Falcon99:
![]() А самый правильный — на PowerShell. |
|
Отправлено: 17:24, 06-08-2018 | #6 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Все, понял, вариант идентичен с тем что мне предложили на другом сайте, просто из-за использования другого варианта условий, выглядит более объемно, плюс добавлены значения для Errorlevel. Правда возник вопрос по строчке:
Почему так, а не более привычно:
Цитата Iska:
А самый правильный — на PowerShell. » PowerShell не подходит по двум причинам: на большинстве машин увы Windows XP, да и интегрировать хочу или на правую клавишу, через подменю отправить, или сделать ярлык на рабочем столе, для того чтобы на него перетягивали проблемный файл, а powershell по умолчанию вроде отрабатывать не будет. |
Последний раз редактировалось Falcon99, 06-08-2018 в 17:57. Причина: Расширено сообщение. Отправлено: 17:42, 06-08-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Falcon99:
Цитата Falcon99:
Цитата Falcon99:
|
|||
Отправлено: 18:04, 06-08-2018 | #8 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 18:09, 06-08-2018 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:26, 06-08-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Работа с документами doc и docx без NET | tumanovalex | Программирование и базы данных | 2 | 12-06-2018 00:15 | |
CMD/BAT - doc в docx | Sisin | Скриптовые языки администрирования Windows | 33 | 13-05-2018 00:39 | |
2007 - [решено] Пакетная конвертация doc в docx | tumanovalex | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 11-04-2018 23:01 | |
CMD/BAT - [решено] Пересохранить документы из DOC в DOCX | NikolayHAOS | Скриптовые языки администрирования Windows | 6 | 19-08-2017 12:22 | |
Офис и Текст - Программы для конвертирования DOCX в DOC | thief_89 | Программное обеспечение Windows | 1 | 13-08-2007 14:53 |
|