s-urbanas
11-02-2015, 13:01
Добрый день!
Помогите реализовать следующую задачу:
Имеется:
*.VBS скрипт при запуске которого с помощью криптографии автоматически подписываются, шифруются, архивируются и переименовываются файлы находящиеся в папке OUT. Файлы именуются согласно маске MIFNS.001, MIFNS.002, MIFNS.003 и т.д.
Если мне необходимо сделать так, чтобы нумерация начиналась не с 1, а с 3 (или любой другой цифры), я меняю значение строки nArjNumber =*, где * - номер начального файла.
Что нужно сделать:
При запуске скрипта должно сначала выводится диалоговое окно, которое просило бы ввести номер с которого будут начинать именоваться выходящие файлы, а потом уже идти шифрование и прочие процедуры.
В общем сделать так, чтобы в случае чего не приходилось лезть руками в скрипт и менять номер самому.
Сам скрипт во вложении.
'On Error Resume Next
strFnsXmlFolder = "D:\BankScheta2\base\OUT\"
const cMaxNum = 2000
Set sh = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
m = Month(Now)
d = Day(Now)
y = Right(Year(Now), 2)
If m < 10 Then m = "0" & m
If d < 10 Then d = "0" & d
strDate = y & m & d
nArjNumber =1
Set folder = fso.GetFolder(strFnsXmlFolder)
If Not fso.FolderExists(strFnsXmlFolder) Then
MsgBox("Не найден каталог " & strFnsXmlFolder)
Wscript.Quit
End If
strFnsTempFolder = strFnsXmlFolder & "Temp\"
If Not fso.FolderExists(strFnsTempFolder) Then
fso.CreateFolder(strFnsTempFolder)
End If
If Not fso.FolderExists(strFnsTempFolder) Then
MsgBox("Не найден каталог " & strFnsTempFolder)
Wscript.Quit
End If
Function CreateFnsArj()
strNum = CStr(nArjNumber)
n = 3 - Len(strNum)
If n > 0 Then strNum = String( n, "0") + strNum
strArjPath = strFnsXmlFolder & "BN25811" & strDate & "0" & strNum & ".ARJ"
sh.Run "C:\ARH\arj32.exe a -e " & strArjPath & " " & strFnsTempFolder, 7, True
strMifnsPath = strFnsXmlFolder & "MIFNS." & strNum
' sh.Run "D:\BankScheta2\scsignex.exe -s -f" & file.Path & " -o" & strFnsXmlFolder & "sign.log -b1", 7, True
sh.Run "D:\BankScheta2\scsignex.exe -s -f" & strArjPath & " -o" & strFnsXmlFolder & "sign.log -b1", 7, True
sh.Run "C:\ARH\arj32.exe a -e " & strMifnsPath & " " & strArjPath, 7, True
fso.DeleteFile strFnsTempFolder & "*.*", True
nArjNumber = nArjNumber + 1
End Function
fso.DeleteFile strFnsTempFolder & "*.*", True
strFileList = strFnsXmlFolder & "xmlfilelist.lst"
set fList = fso.OpenTextFile(strFileList, 2, True)
nCount = 0
Set folder = fso.GetFolder(strFnsXmlFolder)
For each file in folder.files
If (UCase(fso.GetExtensionName(file.Path)) = "XML") Then
fList.WriteLine(file.Path)
nCount = 1
End If
Next
fList.Close
If nCount = 0 Then
MsgBox("В каталоге " & strFnsTempFolder & "отсутствуют XML-файлы" )
Wscript.Quit
End If
sh.Run "C:\WINNT\asrkeyw.exe", 7, True
sh.Run "subst A: /d", 7, True
sh.Run "subst A: D:\BankScheta2\MGTU", 7, True
sh.Run "D:\BankScheta2\scsignex.exe -s -l" & strFileList & " -o" & strFnsXmlFolder & "sign.log -b1", 7, True
sh.Run "subst A: /d", 7, True
sh.Run "subst A: D:\BankScheta2\CUKS", 7, True
sh.Run "D:\BankScheta2\scsignex.exe -e -a0020 -l" & strFileList & " -o" & strFnsXmlFolder & "crypt.log -b1", 7, True
sh.Run "subst A: /d", 7, True
sh.Run "subst A: D:\BankScheta2\MGTU", 7, True
nCount = 1
Set folder = fso.GetFolder(strFnsXmlFolder)
For each file in folder.files
If (UCase(fso.GetExtensionName(file.Path)) = "XML") Then
fso.CopyFile file.Path, strFnsTempFolder, True
If nCount = cMaxNum Then
CreateFnsArj()
nCount = 0
End If
nCount = nCount + 1
End If
Next
If nCount > 1 Then
CreateFnsArj()
End If
' sh.Run "subst A: /d", 7, True
Помогите реализовать следующую задачу:
Имеется:
*.VBS скрипт при запуске которого с помощью криптографии автоматически подписываются, шифруются, архивируются и переименовываются файлы находящиеся в папке OUT. Файлы именуются согласно маске MIFNS.001, MIFNS.002, MIFNS.003 и т.д.
Если мне необходимо сделать так, чтобы нумерация начиналась не с 1, а с 3 (или любой другой цифры), я меняю значение строки nArjNumber =*, где * - номер начального файла.
Что нужно сделать:
При запуске скрипта должно сначала выводится диалоговое окно, которое просило бы ввести номер с которого будут начинать именоваться выходящие файлы, а потом уже идти шифрование и прочие процедуры.
В общем сделать так, чтобы в случае чего не приходилось лезть руками в скрипт и менять номер самому.
Сам скрипт во вложении.
'On Error Resume Next
strFnsXmlFolder = "D:\BankScheta2\base\OUT\"
const cMaxNum = 2000
Set sh = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
m = Month(Now)
d = Day(Now)
y = Right(Year(Now), 2)
If m < 10 Then m = "0" & m
If d < 10 Then d = "0" & d
strDate = y & m & d
nArjNumber =1
Set folder = fso.GetFolder(strFnsXmlFolder)
If Not fso.FolderExists(strFnsXmlFolder) Then
MsgBox("Не найден каталог " & strFnsXmlFolder)
Wscript.Quit
End If
strFnsTempFolder = strFnsXmlFolder & "Temp\"
If Not fso.FolderExists(strFnsTempFolder) Then
fso.CreateFolder(strFnsTempFolder)
End If
If Not fso.FolderExists(strFnsTempFolder) Then
MsgBox("Не найден каталог " & strFnsTempFolder)
Wscript.Quit
End If
Function CreateFnsArj()
strNum = CStr(nArjNumber)
n = 3 - Len(strNum)
If n > 0 Then strNum = String( n, "0") + strNum
strArjPath = strFnsXmlFolder & "BN25811" & strDate & "0" & strNum & ".ARJ"
sh.Run "C:\ARH\arj32.exe a -e " & strArjPath & " " & strFnsTempFolder, 7, True
strMifnsPath = strFnsXmlFolder & "MIFNS." & strNum
' sh.Run "D:\BankScheta2\scsignex.exe -s -f" & file.Path & " -o" & strFnsXmlFolder & "sign.log -b1", 7, True
sh.Run "D:\BankScheta2\scsignex.exe -s -f" & strArjPath & " -o" & strFnsXmlFolder & "sign.log -b1", 7, True
sh.Run "C:\ARH\arj32.exe a -e " & strMifnsPath & " " & strArjPath, 7, True
fso.DeleteFile strFnsTempFolder & "*.*", True
nArjNumber = nArjNumber + 1
End Function
fso.DeleteFile strFnsTempFolder & "*.*", True
strFileList = strFnsXmlFolder & "xmlfilelist.lst"
set fList = fso.OpenTextFile(strFileList, 2, True)
nCount = 0
Set folder = fso.GetFolder(strFnsXmlFolder)
For each file in folder.files
If (UCase(fso.GetExtensionName(file.Path)) = "XML") Then
fList.WriteLine(file.Path)
nCount = 1
End If
Next
fList.Close
If nCount = 0 Then
MsgBox("В каталоге " & strFnsTempFolder & "отсутствуют XML-файлы" )
Wscript.Quit
End If
sh.Run "C:\WINNT\asrkeyw.exe", 7, True
sh.Run "subst A: /d", 7, True
sh.Run "subst A: D:\BankScheta2\MGTU", 7, True
sh.Run "D:\BankScheta2\scsignex.exe -s -l" & strFileList & " -o" & strFnsXmlFolder & "sign.log -b1", 7, True
sh.Run "subst A: /d", 7, True
sh.Run "subst A: D:\BankScheta2\CUKS", 7, True
sh.Run "D:\BankScheta2\scsignex.exe -e -a0020 -l" & strFileList & " -o" & strFnsXmlFolder & "crypt.log -b1", 7, True
sh.Run "subst A: /d", 7, True
sh.Run "subst A: D:\BankScheta2\MGTU", 7, True
nCount = 1
Set folder = fso.GetFolder(strFnsXmlFolder)
For each file in folder.files
If (UCase(fso.GetExtensionName(file.Path)) = "XML") Then
fso.CopyFile file.Path, strFnsTempFolder, True
If nCount = cMaxNum Then
CreateFnsArj()
nCount = 0
End If
nCount = nCount + 1
End If
Next
If nCount > 1 Then
CreateFnsArj()
End If
' sh.Run "subst A: /d", 7, True