Dt83
21-07-2011, 14:51
Добрый день!
Не могу понять как реализовать порядковую нумерацию создаваемых архивов. Например существует 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
Не могу понять как реализовать порядковую нумерацию создаваемых архивов. Например существует 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