本文介绍了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( 忽略) 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 那么 ' 当前正在运行 ELSEIF (registeredTask.LastRunTime = 00:00:00 OR registeredTask.LastRunTime = 12:00:00 AM)或 _ (registeredTask.NextRunTime = 00:00:00 或 registeredTask .NextRunTime = 12:00:00 AM)然后 ' 未运行/未安排 ELSE IF registeredTask.LastTaskResult<> 0 那么 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 ' 详细信息任务 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 moreDIM colArguments, reSet colArguments = WScript.Arguments.NamedSet re = new RegExpre.Pattern = colArguments.Item("Ignore")re.IgnoreCase = TrueDIM service, rootFolder, taskCollectionSet service = CreateObject("Schedule.Service")call service.Connect()Set rootFolder = service.GetFolder("\")Set taskCollection = rootFolder.GetTasks(0)Dim numberOfTasks, bHasErrors, strDetailsnumberOfTasks = taskCollection.CountbHasErrors = 0If numberOfTasks = 0 Then strDetails = "No tasks registered." & vbCRLFElse 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 NEXTEND IFIF 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#的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-19 11:47