Member 11358696 Ответов: 1

Преобразование VBSCRIPT в C#


ребята, кто-нибудь может помочь e в преобразовании приведенного ниже кода в C#. он пытался использовать различные инструменты преобразования и веб-сайт, но пока не преуспел. и я новичок в кодировании и написании сценариев.
сайт на который я ссылался был converter.telerik.com , expert-exchange.com, developerfusion.com и многое другое
DIM colArguments, re
Set colArguments = WScript.Arguments.Named
Set re = new RegExp
re.Pattern = colArguments.Item("Ignore")
re.IgnoreCase = True


DIM service, rootFolder, taskCollection
Set service = CreateObject("Schedule.Service")
call service.Connect()
Set rootFolder = service.GetFolder("\")
Set taskCollection = rootFolder.GetTasks(0)

Dim numberOfTasks, bHasErrors, strDetails
numberOfTasks = taskCollection.Count
bHasErrors = 0

If numberOfTasks = 0 Then
    strDetails = "No tasks registered." & vbCRLF
Else
    strDetails = numberOfTasks & " tasks registered..." & vbCRLF & vbCRLF
    DIM registeredTask, strFlag
    FOR EACH registeredTask IN taskCollection
            strFlag = ""

            IF colArguments.Item("Ignore") <> "" AND re.Test(registeredTask.Name) THEN ' manual ignore
            ELSEIF NOT registeredTask.Enabled THEN  ' disabled
            ELSEIF registeredTask.State = 4 THEN 'currently running
            ELSEIF (registeredTask.LastRunTime = "00:00:00" OR registeredTask.LastRunTime = "12:00:00 AM") OR _
                (registeredTask.NextRunTime = "00:00:00" OR registeredTask.NextRunTime = "12:00:00 AM") THEN ' not run/not scheduled
            ELSE
                IF registeredTask.LastTaskResult <> 0 THEN
                    bHasErrors = true
                    strFlag = "*** ERROR --> "
                END IF
            END IF

            DIM strState: strState = ""
            SELECT CASE  registeredTask.State   'http://msdn.microsoft.com/en-us/library/windows/desktop/aa382097(v=vs.85).aspx
                CASE 0: strState = "UNKNOWN"
                CASE 1: strState = "DISABLED"
                CASE 2: strState = "QUEUED"
                CASE 3: strState = "READY"
                CASE 4: strState = "RUNNING"
            END SELECT


            'detail all tasks
            strDetails = strDetails & strFlag & _
                "Task '" & registeredTask.Name & "'" & vbCRLF & _
                "- Enabled:     " & registeredTask.Enabled & vbCRLF & _
                "- Last Run Time:   " & registeredTask.LastRunTime & vbCRLF & _
                "- Next Run Time:   " & registeredTask.NextRunTime & vbCRLF & _
                "- Last Result:     " & registeredTask.LastTaskResult & vbCRLF & _
                "- Running State:   " & strState & vbCRLF  & vbCRLF
    NEXT
END IF

IF bHasErrors THEN
    call WScript.echo("Summary: Some important tasks have errors!")
    call WScript.echo("Details: " & strDetails)
    call WScript.Quit(1001)
ELSE
    call WScript.echo("Summary: All OK!")
    call WScript.echo("Details: " & strDetails)
    call WScript.Quit(0)
END IF

Leo Chapiro

Я нашел это классным: "и я новичок в кодировании и написании сценариев" :)

Nathan Minier

Эм, я не "знаю" VB, и я совершенно уверен, что смогу его перевести. На чем ты застрял?

1 Ответов

Рейтинг:
2

CHill60

Вы не найдете автоматического конвертера из VBScript в C#. Лучший подход к этому-выяснить, что он пытается сделать, и написать его с помощью компонентов библиотеки .net.

Например, WScript не требуется - он просто предоставляет средство захвата параметров для этого скрипта, отображения выходных данных, выхода с кодом выхода и т. д. - Все это можно сделать с помощью консольного приложения C#.

Бит RegExp использует регулярные выражения - для этого тоже есть библиотека .net.

Вы не создадите расписание объектов.Услуга... опять же есть встроенные библиотеки.

Быстрый взгляд показывает, что скрипт пытается отслеживать запланированные задачи на компьютере... поэтому вы можете получить дальнейшее вдохновение из этой статьи CP Новая библиотека классов планировщика задач для .NET[^]