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

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

Ответить
Настройки темы
CMD/BAT - помогите реализовать копирование со счетчиком!

Новый участник


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

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


1. Какими командами в bat файле возможно реализовать операцию копирования "счетчиком"?
Есть файл с названием типа MO_024_109.doc Его копируем в папку "готово", копируем НОВЫЙ ЧИСТЫЙ файл с названием шаблон.doc и переименовываем его в MO_024_110.doc
Если можно, с пояснениями, поскольку названия файлов будут разные, а следовательно такие операции будут для каждого свои (RO_024_225.doc -> RO_024_226.doc, DT_024_311.doc -> DT_024_312.doc и т.д.).

2. Какими командами в bat файле дописывать в название файла?
Файл с названием типа MO_024_109.doc копируем в папку "готово", и дописываем в конец файла _R, чтобы получилось MO_024_109_R.doc

Отправлено: 16:53, 02-07-2013

 

Ветеран


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

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


Цитата mpg_kyron:
Есть файл с названием типа MO_024_109.doc »
Цитата mpg_kyron:
названия файлов будут разные »
Откуда мы знаем его название? По каким правилам оно сформировано? По каким критериям мы можем судить, что это именно «тот самый» файл?

Цитата mpg_kyron:
2. Какими командами в bat файле дописывать в название файла? »
Ответ будет зависеть от Ваших ответов на заданные выше вопросы.

Отправлено: 17:01, 02-07-2013 | #2



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

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


Новый участник


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

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


1. Название файла состоит из: MO - название отдела, 024 - номер выпуска газеты, 100 - номер текста. Соответственно, отделов несколько, для каждого своя буквенная идентификация. Номер выпуска меняется раз в неделю, в бате предполагаю менять вручную. Номер текста сделан следующим образам - первая цифра - номер сотрудника, вторые две - порядковый номер текста. Соответственно, каждому тексту соответствует уникальное (относительно) название файла. После того как документ написан, он батом отправляется в папку "готово", и тем же батом создается новый файл со следующим номером (+1 в конце названия). 100 файлов более чем достаточно.

2. Дописывание нужно для идентификации прохождения файла по инстанциям - редактор, ведущий редактор, корректор. Соответственно, файл сначала называется MO_024_109.doc, затем MO_024_109_R.doc, затем MO_024_109_R_SA.doc, затем MO_024_109_R_SA_K.doc. Тоесть, по названию файла можно понять, что с ним происходило, и в крайнем случае вернуться к старой версии текста.

Отправлено: 17:27, 02-07-2013 | #3


Ветеран


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

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


mpg_kyron, на WSH, пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Const strTemplateFile      = "E:\Песочница\0288\01\шаблон.doc"
Const strDestinationFolder = "E:\Песочница\0288\02"


Dim strSourceFile
Dim strSourceFolder

Dim objFSO
Dim objFile
Dim objRegExp

Dim strNewFileName


If WScript.Arguments.Count = 1 Then
	With WScript.CreateObject("Scripting.FileSystemObject")
		strSourceFile   = .GetAbsolutePathName(WScript.Arguments.Item(0))
		strSourceFolder = .GetParentFolderName(strSourceFile)
		
		If .FileExists(strSourceFile) Then
			Set objFile   = .GetFile(strSourceFile)
			Set objRegExp = WScript.CreateObject("VBScript.RegExp")
			
			objRegExp.Pattern = "^((?:MO|RO|DT)_\d{3}_)(\d{3})(\.doc)$"
			
			If objRegExp.Test(objFile.Name) Then
				With objRegExp.Execute(objFile.Name).Item(0)
					strNewFileName = .SubMatches(0) & Right("000" & CStr(CLng(.SubMatches(1)) + 1), 3) & .SubMatches(2)
				End With
				
				If .FileExists(strTemplateFile) Then
					.CopyFile strTemplateFile, .BuildPath(strSourceFolder, strNewFileName), True
				Else
					WScript.Echo "Can't find template file [" & strTemplateFile & "]."
				End If
				
				If .FolderExists(strDestinationFolder) Then
					objFile.Name = .GetBaseName(objFile.Name) & "_R." & .GetExtensionName(objFile.Name)
					objFile.Copy strDestinationFolder & "\", True
					objFile.Delete True
				Else
					WScript.Echo "Can't find destination folder [" & strDestinationFolder & "]."
				End If
			Else
				WScript.Echo "Source file [" & strSourceFile & "] not match for pattern [" & objRegExp.Pattern & "]."
			End If
			
			Set objRegExp = Nothing
			Set objFile   = Nothing
		Else
			WScript.Echo "Can't find source file [" & strSourceFile & "]."
		End If
	End With
Else
	WScript.Echo "Usage: wscript.exe """ & WScript.ScriptName & """ <Source file>"
End If

WScript.Quit 0

Примечания:

читать дальше »
1. Имя файла должно удовлетворять шаблону: два символа имени отдела — одно из «MO», «RO», «DT» (если потребны другие — добавляйте в шаблон); знак подчёркивания; обязательные три цифры; знак подчёркивания; обязательные три цифры; точка между именем и расширением; расширение «doc».

2. Все существующие файлы перезаписываются без запроса. Например, если в папке назначения («готово») будет существовать файл с тем же именем, что и выбранный для обработки исходный файл — он будет молча перезаписан. И т.п.

3. Наиболее удобно будет работать со сценарием, дав ему какое-либо осмысленное имя (например, «Отправить на дальнейшую обработку.vbs») и создав на него ярлык в папке «%UserProfile%\SendTo» (ярлык тоже стоит переименовать, убрав начальное «Ярлык на…»). Затем достаточно будет просто щёлкнуть по потребному для обработки файлу правой клавишей мышки и выбрать из контекстного меню «Отправить → Отправить на дальнейшую обработку».

Отправлено: 12:06, 03-07-2013 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите реализовать деление на 0 (калькулятор) virus8 Программирование и базы данных 5 06-10-2011 15:21
CMD/BAT - [решено] Помогите реализовать скачивание html страницы и поиск в ней alexmoreman Скриптовые языки администрирования Windows 21 13-08-2010 18:18
VBS/WSH/JS - Помогите реализовать выполнение команд при логоне. ufunf Программирование и базы данных 5 26-08-2009 13:08
помогите реализовать diga Флейм 4 28-03-2009 14:07
Помогите разобраться, как реализовать в груповой политике. sergeynur Microsoft Windows NT/2000/2003 6 18-07-2008 11:19




 
Переход