|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Чтение и запись в файл |
|
VBS/WSH/JS - [решено] Чтение и запись в файл
|
Новый участник Сообщения: 16 |
Добрый день!
Не могу понять как реализовать порядковую нумерацию создаваемых архивов. Например существует 2 папки 1 и 2. При запуске скрипта, проверяется наличие файлов сначала в папке 1 (если есть, то закручивается архив с именем опр. маски), затем наличие файлов в папке 2 (если есть закручивается архив с именем опр. маски). Нужно чтобы в имени создаваемых архивов помимо маски добавлялась порядковая нумерация начиная с 01 (маска имени архива берется по маске имени закручиваемого файла). Т.е. если при первом запуске при наличии файлов в обеих папках закрутилось два архива (например: *01.arj, *02.arj), то при повторном запуске скрипта при наличии файлов хотя бы в одной папке образовался архив с именем *03.arj (порядковая нумерация идет в течении дня, на след. день архивы снова должны нумероваться с 01). Пока есть идея создать какой нибудь текстовичок, в кот. бы велась запись порядковых номеров, но не совсем понятно как прочитать последнюю строку этого текстовичка. Может быть есть еще какие то способы? Спасибо! Вот что пока написала: iDir1 = "D:\test\1" iDir2 = "D:\test\2" Maska = "SBC........._............_................_...\.txt$" ForReading = 1 rem--------------------------------------------------------------- rem Проверяем сущестование директорий rem ---Проверяем сущестование D:\test\1--- Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(iDir1) Then Set objFolder = objFSO.GetFolder(iDir1) Set FSO = WScript.CreateObject("Scripting.FileSystemObject") set Files = FSO.GetFolder(iDir1).Files Set Re = New RegExp Re.Pattern = Maska Re.IgnoreCase = True Set WshShell = CreateObject("WScript.Shell") For Each File In Files If Re.Test(File.Name) Then str1="A"&Mid(File.Name,8,5)&Mid(File.Name,20,6) WshShell.Run ("""C:\Program Files\7-Zip\7z""a -tzip """+iDir1+"\"+str1+".arj"" -r """+iDir1+"\*.txt""") end if next Else Wscript.Echo "Не найдена директория D:\test\1" End If rem ---Проверяем сущестование D:\test\2--- Set objFSO1 = CreateObject("Scripting.FileSystemObject") If objFSO1.FolderExists(iDir2) Then Set objFolder1 = objFSO1.GetFolder(iDir2) Set FSO1 = WScript.CreateObject("Scripting.FileSystemObject") set Files1 = FSO1.GetFolder(iDir2).Files Set Re = New RegExp Re.Pattern = Maska Re.IgnoreCase = True Set WshShell = CreateObject("WScript.Shell") For Each File1 In Files1 If Re.Test(File1.Name) Then str2="C"&Mid(File1.Name,8,5)&Mid(File1.Name,20,6) WshShell.Run ("""C:\Program Files\7-Zip\7z""a -tzip """+iDir2+"\"+str2+".arj"" -r """+iDir2+"\*.txt""") end if next Else Wscript.Echo "Не найдена директория D:\test\2" End If |
|
Отправлено: 14:51, 21-07-2011 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Можно и с текстовичком.
![]() Концепция такая - в том месте, где при создании архива должен выставляться его порядковый номер, вписать предлагаемую функцию. CheckFile = "z:\check.txt" 'пример archfile = "qwerty_" & SetNumberArchive(CheckFile) & ".arj" Function SetNumberArchive(f) Dim arrCheck Dim CountArch Dim DateCheck Dim objFSO Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(f) Then arrCheck = Split(objFSO.OpenTextFile(f).ReadLine, "#", 2) DateCheck = arrCheck(0) CountArch = arrCheck(1) + 1 End If If Not CDate(DateCheck) = Date Then CountArch = 1 objFSO.OpenTextFile(f, 2, True).Write Date & "#" & CountArch SetNumberArchive = CountArch End Function |
Отправлено: 11:56, 23-07-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать правильно я понимаю функция регистрирует запуски начиная нумерацию с 1?
|
Отправлено: 11:48, 25-07-2011 | #3 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата Dt83:
|
|
Отправлено: 13:10, 25-07-2011 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать не могу разобраться чтобы нумерация шла с 01...спасибо!
|
|
Отправлено: 13:23, 25-07-2011 | #5 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата Dt83:
Right("00" & SetNumberArchive(CheckFile), 3) - нумерация от 001 до 999 Ну и т. д. |
|
Отправлено: 14:14, 25-07-2011 | #6 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Спасибо большое!
|
Отправлено: 14:29, 25-07-2011 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
FreeBSD - NTFS - чтение/запись | mitsumoto | Общий по FreeBSD | 1 | 09-12-2010 17:02 | |
CMD/BAT - чтение / запись *.txt | RUVATA | Скриптовые языки администрирования Windows | 8 | 06-08-2010 15:43 | |
.NET - Запись настроек программы в файл txt и чтение этих настроек обратно | ProgrammerPC | Программирование и базы данных | 4 | 11-12-2009 10:46 | |
Чтение и запись CD-R дисков... | GulaG | Хочу все знать | 25 | 08-06-2004 20:15 | |
Чтение/запись на разделе | Spijon | Общий по Linux | 8 | 07-10-2003 20:57 |
|