![]() |
Добавление в *.VBS скрипт диалогового окна.
Вложений: 1
Добрый день!
Помогите реализовать следующую задачу: Имеется: *.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 |
Замените:
Код:
nArjNumber =1 Код:
nArjNumber = CInt(Trim(InputBox("Enter start number", "Enter number", 1))) |
Iska, спасибо!
А можно ли сделать так, чтобы по нажатию кнопки "Cancel" скрипт полностью прекращал свою работу? Сейчас он валится с ошибкой (см. скриншот). Жалуется на 17 строку "nArjNumber = CInt(Trim(InputBox("Enter start number", "Enter number", 1)))". Видимо после нажатия отмены хочет продолжать свою работу, но ничего не получается. ![]() |
Замените в оригинальном скрипте ту же часть на:
Код:
Dim strValue |
Iska, всё получилось! Большое Вам спасибо!
|
Время: 21:24. |
Время: 21:24.
© OSzone.net 2001-