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

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

Ответить
Настройки темы
CMD/BAT - [решено] переименования файлов

Старожил


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

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


Привет всем! помогите со скриптом, есть n-ое кол-во файлов docx и txt файл (в нем список имен) нужен скрипт которые будет брать имена с txt файла и переименовывать docx файлы согласно списка в txt файле

Отправлено: 10:24, 07-12-2017

 

Ветеран


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

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


Цитата mcintosh55:
Извините за тупой вопрос но все же wsf файл запускать так же как и vbs »
Да, исполнитель тот же — wscript.exe/cscript.exe.

Цитата mcintosh55:
office 2013 /2016, скрипт ругается на 5 строчку: Методы или свойство OpenDataSource недоступны, потому что эту команду нельзя использовать в режиме чтения. И действительно word запускаться в режиме чтения »
Замените строку:
Код: Выделить весь код
		Set objDocument = objWord.Documents.Open("C:\Мои проекты\0136\order.doc", , True)
на:
Код: Выделить весь код
		Set objDocument = objWord.Documents.Open("C:\Мои проекты\0136\order.doc")
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:20, 07-12-2017 | #21



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

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


Старожил


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

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


ISKA, большое спасибо!!!

скрипт работает office 2003/2007/2013/2016
Скрытый текст
Код: Выделить весь код
<job>
	<object ProgId = "Word.Application" id = "objWord" events = "true" />
	<script language = "VBScript">
		Option Explicit
		
		Const wdFormLetters = 0
		Const wdSendToNewDocument = 0
		
		Const wdDefaultFirstRecord = 1
		Const wdDefaultLastRecord  = -16
		
		Const wdNextRecord = -2
		
		Dim objDocument
		Dim objCurrResultDocument
		
		Dim i
		Dim strDocumentName
		
		
		objWord.Visible = True
		
		Set objDocument = objWord.Documents.Open("C:\Мои проекты\0136\order.doc")
		
		With objDocument.MailMerge
			.MainDocumentType = wdFormLetters
			.OpenDataSource _
				"C:\Мои проекты\0136\base.xls", _
				,,,,,,,,,, _
				"Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;Jet OLEDB:Engine Type=35;""", _
				"SELECT * FROM `Лист1$`"
			
			.Destination = wdSendToNewDocument
			.SuppressBlankLines = True
			
			For i = wdDefaultFirstRecord To .DataSource.RecordCount
				.DataSource.FirstRecord = .DataSource.ActiveRecord
				.DataSource.LastRecord = .DataSource.ActiveRecord
				
				Set objCurrResultDocument = Nothing
				
				strDocumentName = .DataSource.DataFields.Item("SNP").Value
				
				.Execute False
				.DataSource.ActiveRecord = wdNextRecord
				
				Do
					WScript.Sleep 100
				Loop Until Not objCurrResultDocument Is Nothing
				
				objCurrResultDocument.Close
			Next
		End With
		
		objDocument.Close False
		WScript.DisconnectObject objWord
		objWord.Quit
		
		WScript.Quit 0
		
		Sub objWord_MailMergeAfterMerge(ByVal objResultDocument, ByVal objMainDocument)
			objResultDocument.SaveAs "C:\Мои проекты\0136\" & strDocumentName & ".doc"
			Set objCurrResultDocument = objResultDocument
			
			rem WScript.Echo "Mail Merge Complete: " & objResultDocument.FullName
		End Sub
	</script>
</job>

Отправлено: 23:56, 07-12-2017 | #22


Ветеран


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

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


mcintosh55, так… Это уже хорошо. Теперь двигаемся дальше.

1. Как я понимаю, Вам сие придётся проделывать достаточно регулярно, так? Как было бы Вам удобнее и проще работать?
2. Существует вполне ненулевая вероятность, что в одном списке окажутся разные люди с полным совпадением ФИО (или даже один и тот же, но с разными постановлениями). Пока это даже никак не проверяется — файл с именем, стоящим ниже по списку просто тупо затрёт ранее созданный файл. Что можно придумать, исходя из исходных данных — что там есть уникального в списке (скажем, тот же номер постановления, нет?

Отправлено: 00:23, 08-12-2017 | #23


Старожил


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

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


Цитата Iska:
Как было бы Вам удобнее и проще работать? »
в принципе на данном этапе все ок, Я завтра напишу cmd скрипт которые будет запускать скрипт wsf скрипт (все системе все скрипты открываются как txt файл ).
Я думаю можно по пробовать фио+столбик personal account это число уникальное
Код: Выделить весь код
strDocumentName = .DataSource.DataFields.Item("SNP" & "_" & "personal account").Value
что типа такого, но у меня не получилось вываливает в ошибку

Последний раз редактировалось mcintosh55, 08-12-2017 в 08:43.


Отправлено: 02:03, 08-12-2017 | #24


Старожил


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

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


Сегодня протестировал скрипт, почему то рандомно он останавливается т.е. может создать новых файлов из всего списка а может и остановиться 10 или 20 или 24 файлов каждый раз по разному

Отправлено: 14:09, 08-12-2017 | #25


Ветеран


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

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


Цитата mcintosh55:
Я думаю можно по пробовать фио+столбик personal account это число уникальное »
Код: Выделить весь код
strDocumentName = .DataSource.DataFields.Item("SNP").Value & "_" & .DataSource.DataFields.Item("personal account").Value
Цитата mcintosh55:
Сегодня протестировал скрипт, почему то рандомно он останавливается т.е. может создать новых файлов из всего списка а может и остановиться 10 или 20 или 24 файлов каждый раз по разному »
На одном и том же файле-списке?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:03, 08-12-2017 | #26


Старожил


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

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


Цитата Iska:
На одном и том же файле-списке? »
нет на разных такое ощущение что он теряет фокус окна, к примеру пока выполнялся скрипт Я открыл cmd консоль и скрипт остановился, до этого еще был браузер открыт другой документ word если делаешь активное например браузера может скрипт остановиться. После того как все закрыли скрипт отработал полностью 2 из 3 раза.

Последний раз редактировалось mcintosh55, 08-12-2017 в 15:19.


Отправлено: 15:09, 08-12-2017 | #27


Ветеран


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

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


mcintosh55, ну, с окнами там работы никакой не ведётся по причине отсутствия такового кода. То, что окна новосозданных документов Word мельтешат в процессе — так я пока специально оставил окно приложения Microsoft Word видимым на случай возникновения ошибок.

mcintosh55, мне вот ещё что подумалось: Вы исполняете .wsf под консольным cscript.exe или под GUI'шным wscript.exe? Я-то всегда работаю под консолью, и у меня именно cscript.exe задан исполнителем (в противовес wscript.exe, используемому по умолчанию). Так вот, под wscript.exe от команд WScript.Echo будут появляться не сообщения в консоли, а окна сообщений, и после появления такого окна сообщения скрипт действительно будет останавливаться до тех пор, пока будет это окно сообщения не будет закрыто.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:36, 08-12-2017 | #28


Старожил


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

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


Код: Выделить весь код
strDocumentName = .DataSource.DataFields.Item("SNP").Value & "_" & .DataSource.DataFields.Item("personal account").Value
у нас скрипт выдал ошибку в "personal account" надо поставить _ а то ошибку выдает Я поменял и в скрипте и в таблице
Код: Выделить весь код
strDocumentName = .DataSource.DataFields.Item("SNP").Value & "_" & .DataSource.DataFields.Item("personal_account").Value
Скрипт Я запускаю по двойному щелчку, по Вашему комментарию Я понял что скрипт надо запускать через cscript.exe. Буду пробовать, отпишусь что и как.

через cscript.exe все отлично отрабатывает

Последний раз редактировалось mcintosh55, 08-12-2017 в 15:54.


Отправлено: 15:46, 08-12-2017 | #29


Старожил


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

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


Большое спасибо, Iska!!! Все отлично работает, то что окна открываются закрываются это не страшно.

Отправлено: 16:02, 08-12-2017 | #30



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Батник для переименования файлов Школьник 5 Скриптовые языки администрирования Windows 21 30-11-2019 21:58
VBS/WSH/JS - VBS Скрипт переименования файлов wwtf Скриптовые языки администрирования Windows 6 26-04-2017 14:00
CMD/BAT - [решено] батник для переименования файлов Pumpik Скриптовые языки администрирования Windows 5 01-02-2014 20:12
CMD/BAT - [решено] не работает счетчик переименования файлов Xeruvim4ik Скриптовые языки администрирования Windows 13 15-04-2013 21:57
Скрипт автоматического переименования файлов mp3 Ламер Программирование в *nix 2 02-03-2011 19:59




 
Переход