标签: vbscript

CScript和VBS从文本文件中删除换行符

我有一个批处理文件正在运行,它会吐出一个text/html文件.批处理文件在文本文件中导致一些换行符,这些换行符在打开电子邮件中的文件时无法很好地转换.我一直试图阅读CScript来创建一个vbs脚本,可以读取文本文件并删除换行符,但没有运气.有什么建议?

vbscript wsh line-breaks

7
推荐指数
1
解决办法
2万
查看次数

理解VBScript中的Const表达式

好吧,我试着理解Const 表达式中的局限性VBScript.除了文字,我无法使用任何东西.什么文档说的是:

文字或其他常量,或包含除 Is 之外的所有算术或逻辑运算符的任何组合.

所以,如果"包括所有算术或逻辑运算符",那么逻辑上我希望我可以这样做:

Const X = (1 + 2)
Run Code Online (Sandbox Code Playgroud)

但是这会带来错误"预期的文字常数".我在这里找到了一个有趣的答案,允许一个人在某种程度上作弊,所以上面的事情可以通过以下方式完成:

Execute "Const X = " & (1 + 2)
Run Code Online (Sandbox Code Playgroud)

但我的问题是标准的常量声明.如果说文件说"表达可能只是文字",那么我永远不会问.
那么我还能用什么(除了文字)?

syntax vbscript const declaration

7
推荐指数
1
解决办法
4696
查看次数

自动从外部工作簿更新值

我有以下工作簿设置:

在此输入图像描述

工作簿A具有指向x工作簿B的链接并从中获取数据.工作簿B链接到其他一些工作簿并从中获取数据.

工作簿A是所有其他工作簿包含的"摘要".就像现在一样,我必须在打开工作簿A之前打开我的所有工作簿B,刷新它们并保存.如果我不这样做,工作簿B将不会更新工作簿C中的数据.

是否可以使用.bat或vbs脚本更新所有工作簿B?或者是否可以从工作簿A中更新它们?

我可能会补充一点,我在这台计算机上使用excel启动器,所以最好是解决方案与之兼容.

vbscript excel scripting vba wsh excel-vba

7
推荐指数
1
解决办法
3663
查看次数

Visual Studio 2012和经典ASP缩进(智能)

首先,这是2012年的一个已知问题(在VS 2008中工作得很好)(尽管在经典ASP太老的情况下肯定没有广泛报道):

http://connect.microsoft.com/VisualStudio/feedback/details/766046/indentation-in-visual-studio-2012

MS已将此关闭为"不可重复",这是公牛!

只是为了解释这个问题,请看下面的例子:

在此输入图像描述

")按Enter 后我的光标位于第60行,将光标放在'A- 它应该放在'B!

现在,我可以强制VS将光标'B从"智能"更改为"阻止":

在此输入图像描述

不幸; "块"是一样的真气,即按Enter写入后If X = Y then把光标在同一缩进层次的If,而不是If+ 1

我的问题:有没有人设法让"智能"缩进工作在经典的asp文件中,如果是这样 - 如何?

编辑:这是一个小视频演示问题(我每次光标移动到错误的位置时键入"???")

http://www.heavencore.co.uk/filehub/Videos/Tech/VisualStudio2013_ClassicASP.mp4

vbscript indentation asp-classic visual-studio visual-studio-2012

7
推荐指数
1
解决办法
1550
查看次数

使用文件夹重定向时访问"应用程序数据"文件夹

我在工作中使用文件夹重定向,我正在尝试简化用户登录终端服务器时运行的脚本.

是否有办法SpecialFolders访问该Application Data文件夹?

我问,因为如果我们必须移动文件夹重定向的位置(由于存储限制),我宁愿不必通过脚本并手动更改内容.

Set objShell = WScript.CreateObject("WScript.Shell")

desktop_location = objShell.SpecialFolders.Item("Desktop")
quick_launch_location = "\\videss\TSUsers\" & user_name & "\Application Data\Microsoft  \Internet Explorer\Quick Launch\"
Run Code Online (Sandbox Code Playgroud)

vbscript special-folders

7
推荐指数
1
解决办法
1万
查看次数

解释VBScript WMI query/impersonationLevel等

Dim strComputer, objReg, ScriptName, strKeyPath, strValueName, strValue
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")
Run Code Online (Sandbox Code Playgroud)

这是一个较大的脚本,我正在尝试对工作进行逆向工程.原始编码器不可用.

我试图研究和理解最后一行代码,但我在网上找不到任何好的信息,而且我对vbs并不擅长.

据我所知: - objreg是一个SWbemObjectEx类型的对象. - winmgmts:{impersonationLevel = impersonate}让对象使用调用者的安全级别(在我的案例系统中) - StdRegProv应该指向HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Default Impersonation Level

我有点得到它应该做的但是我不知道它是如何玩的.

如果任何人都可以逐字逐句地解释它的作用,包括"!\"之类的东西,我会非常感激它.谢谢.

vbscript wmi wmi-query

7
推荐指数
1
解决办法
1万
查看次数

C#/ WSC(COM)互操作中的FatalExecutionEngineError

我即将开始一个用VBScript编写的遗留系统的迁移项目.它有一个有趣的结构,因为大部分内容是通过将各种组件编写为"WSC"文件来隔离的,这些文件实际上是以类似COM的方式公开VBScript代码的一种方式.从"核心"到这些组件的边界接口是相当紧凑和众所周知的,所以我希望我能够解决编写新核心并重用WSC,推迟他们的重写.

可以通过添加对"Microsoft.VisualBasic"的引用并调用来加载WSC

var component = (dynamic)Microsoft.VisualBasic.Interaction.GetObject("script:" + controlFilename, null);
Run Code Online (Sandbox Code Playgroud)

其中"controlFilename"是完整的文件路径.GetObject返回类型为"System .__ ComObject"的引用,但可以使用.net的"动态"类型访问属性和方法.

这似乎最初工作正常,但我遇到了很多特定情况的问题 - 我担心这可能发生在其他情况下,或者更糟糕的是,坏事情在很多时候都会发生并被掩盖,等到我最不期望的时候爆炸.

引发的异常是"System.ExecutionEngineException"类型,这听起来特别可怕(和模糊)!

我拼凑了我认为最小的重现案例,并希望有人可以对这个问题提出一些看法.我还发现了一些似乎可以阻止它的调整,但我无法解释原因.

  1. 创建一个名为"WSCErrorExample"的新的空"ASP.NET Web应用程序"(我在VS 2013/.net 4.5和VS 2010/.net 4.0中完成了这个,它没有区别)

  2. 在项目中添加对"Microsoft.VisualBasic"的引用

  3. 添加一个名为"Default.aspx"的新"Web窗体",并将以下内容粘贴到"Default.aspx.cs"的顶部

    using System;
    using System.IO;
    using System.Reflection;
    using System.Runtime.InteropServices;
    using Microsoft.VisualBasic;
    
    namespace WSCErrorExample
    {
        public partial class Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                var currentFolder = GetCurrentDirectory();
                var logFile = new FileInfo(Path.Combine(currentFolder, "Log.txt"));
                Action<string> logger = message =>
                {
                    // The try..catch is to avoid IO exceptions when reproducing by requesting …
    Run Code Online (Sandbox Code Playgroud)

c# asp.net com vbscript wsc

7
推荐指数
1
解决办法
3295
查看次数

Windows任务计划程序运行VBScript

我试图通过使用Windows任务计划程序自动化VBScript.但是,我尝试使用cscript.exe+ "C:\...\script.vbs"但它没有运行.我也尝试在CMD(cscript.exe "C:\...\script.vbs")中直接运行相同的命令,并且它有效.

可能是什么问题?

编辑:

我只是尝试将设置切换为"Run only when user is logged on","Run whether user is logged on or not"并且工作正常.我想知道是否有办法让我的任务计划运行,即使用户已注销.

windows vbscript automation scheduler job-scheduling

7
推荐指数
1
解决办法
4万
查看次数

什么是VBScript等效的%*或$*参数列表?

是否有%*(批处理文件)或$*(bash脚本)参数列表等效于VBScript?

我想检索确切的命令行调用.

举例:

cscript //nologo script.vbs /arg1:a -s "a b" 1 c /arg2:"x y" "d e" -l '3 4'
Run Code Online (Sandbox Code Playgroud)

应该返回:

/arg1:a -s "a b" 1 c /arg2:"x y" "d e" -l '3 4'
Run Code Online (Sandbox Code Playgroud)

(包括引号).

我看过WScript.Arguments但它没有返回verbatim命令行.

vbscript wsh command-line-arguments

7
推荐指数
2
解决办法
677
查看次数

SQLXML批量将属性加载到单个表中

TLDR;

我试图使用SQLXML Bulk Loader(4.0)来加载看起来像这样的XML;

<?xml version = "1.0" encoding = "UTF-8"?>
<CarSales>
 <Client>
  <ID >3</ID>
  <ClientName>John Smith3</ClientName>
  <Country name="Colombia"/>
 </Client>
 <Client>
  <ID>7</ID>
  <ClientName>Slow Sid</ClientName>
  <Country name="Bolivia"/>
 </Client>
 <Client>
  <ID>10</ID>
  <ClientName>Missing Town</ClientName>
  <Country name="Argentina"/>
 </Client>
</CarSales>
Run Code Online (Sandbox Code Playgroud)

我希望在我正在使用的唯一表的列中捕获Country name属性("Client_XMLBulkLoad",它还包含客户端名称和ID).那可能吗?


更多细节:

这是我到目前为止对应的XSD("Country"注释掉了)

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql = "urn:schemas-microsoft-com:mapping-schema">
 <xsd:element name = "CarSales" sql:is-constant = "1" >
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element name = "Client" sql:relation="Client_XMLBulkLoad"
          maxOccurs = "unbounded">
      <xsd:complexType>
       <xsd:sequence>
        <xsd:element name = "ID" type = "xsd:integer" 
                     sql:field = "ID" />
        <xsd:element name = "ClientName" …
Run Code Online (Sandbox Code Playgroud)

xml vbscript sqlxml sql-server-2008-r2 xml-parsing

7
推荐指数
1
解决办法
491
查看次数