VBSCRIPT到C#的转换 [英] VBSCRIPT to C# conversion
本文介绍了VBSCRIPT到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屋!
查看全文