VBSCRIPT到C#的转换 [英] VBSCRIPT to C# conversion

查看:85
本文介绍了VBSCRIPT到C#的转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都可以帮助将代码转换为C#。它通过各种转换工具和网站尝试但尚未成功。我也很喜欢编码和编写脚本。

我推荐的网站是converter.telerik.com,expert-exchange.com,developerfusion.com以及更多

  DIM  colArguments,re 
设置 colArguments = WScript.Arguments.Named
设置 re = new RegExp
re.Pattern = colArguments.Item(< span class =code-string> 忽略
re.IgnoreCase = True


DIM 服务,rootFolder,taskCollection
设置 service = CreateObject( Schedule.Service
调用 service.Connect()
设置 rootFolder = service.GetFolder( \
设置 taskCollection = rootFolder.GetTasks( 0

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

如果 numberOfTasks = 0 然后
strDetails = 没有注册任务。& vbCRLF
Else
strDetails = numberOfTasks& 已注册的任务......& vbCRLF& vbCRLF
DIM registeredTask,strFlag
FOR EACH registeredTask IN taskCollection
strFlag =

IF colArguments.Item( 忽略)<> AND re.Test(registeredTask .Name)那么 ' 手动忽略
ELSEIF NOT registeredTask.Enabled 那么 ' 已禁用
ELSEIF registeredTask.State = 4 那么 ' < span class =code-comment>当前正在运行

ELSEIF (registeredTask.LastRunTime = 00:00:00 OR registeredTask.LastRunTime = 12:00:00 AM _
(registeredTask.NextRunTime = < span class =code-string>
00:00:00 registeredTask .NextRunTime = 12:00:00 AM然后 ' 未运行/未安排
ELSE
IF registeredTask.LastTaskResult<> 0 那么
bHasErrors = true
strFlag = *** ERROR - >
< span class =code-keyword> 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 = < span class =code-string> DISABLED
CASE 2:strState = QUEUED
CASE 3:strState = READY
CASE 4:strState = RUNNING
END SELECT


' 详细信息任务
strDetails = strDetails& strFlag& _
任务'& registeredTask.Name& '& vbCRLF& _
- 已启用:& registeredTask.Enabled& vbCRLF& _
- 上次运行时间:& registeredTask.LastRunTime& vbCRLF& _
- 下次运行时间:& registeredTask.NextRunTime& vbCRLF& _
- 最后结果:& registeredTask.LastTaskResult& vbCRLF& _
- 运行状态:& strState& vbCRLF& vbCRLF
NEXT
END IF

IF bHasErrors 那么
调用 WScript.echo( 摘要:一些重要任务有错误!
调用 WScript.echo( 详细信息:& strDetails)
调用 WScript.Quit( 1001
ELSE
call WScript.echo( 摘要:一切OK!
call WScript.echo( Details:& st rDetails)
call WScript.Quit( 0
END IF

解决方案

你'不会找到从VBScript到C#的自动转换器。更好的方法是弄清楚它正在尝试做什么,并使用.net库组件编写它。



例如,WScript不是必需的 - 它只是提供捕获此脚本的参数,显示输出,退出退出代码等的方法 - 所有可以通过C#控制台应用程序完成的事情。



RegExp位正在使用正则表达式 - 也有一个.net库。



你不会创建一个对象Schedule.Service ...再次有内置的库。



快速浏览显示脚本正在尝试监控计算机上的计划任务...因此您可能会从此CP文章中获得进一步的灵感一个新的.NET任务调度程序类库 [ ^ ]


guys can anyone help e in converting below code to C#. it tried via various conversion tools and website but not succeeded yet. and i am new to coding and scripting aswell.
website i referred was converter.telerik.com , expert-exchange.com, developerfusion.com and many more

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

解决方案

You're not going to find an auto-converter from VBScript to C#. A better approach with this is to work out what it is trying to do and write it using .net library components.

For example WScript is not required - it's just providing a means of capturing parameters for this script, displaying output, exiting with an exit code etc - all things that can be done with a C# console application.

The RegExp bit is using regular expressions - there's a .net library for that too.

You wouldn't create an object Schedule.Service ... again there are built-in libraries.

A quick glance shows that the script is attempting to monitor scheduled tasks on a machine... therefore you might get further inspiration from this CP article A New Task Scheduler Class Library for .NET[^]


这篇关于VBSCRIPT到C#的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆