需要一个接受文件名作为参数的函数,然后返回该文件中的行数.
应该在30秒内获取一个1000万行文件的计数.
目前有一些东西 - 但它与大文件太慢:
Dim objFSO, strTextFile, strData, arrLines, LineCount
CONST ForReading = 1
'name of the text file
strTextFile = "sample.txt"
'Create a File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Open the text file - strData now contains the whole file
strData = objFSO.OpenTextFile(strTextFile,ForReading).ReadAll
'Split by lines, put into an array
arrLines = Split(strData,vbCrLf)
'Use UBound to count the lines
LineCount = UBound(arrLines) + 1
wscript.echo LineCount
'Cleanup
Set objFSO = Nothing
Run Code Online (Sandbox Code Playgroud) 我有一个很大的经典ASP应用程序,我必须维护,我反复发现自己因缺乏短路评估能力而受阻.例如,VBScript不会让你逃脱:
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...
Run Code Online (Sandbox Code Playgroud)
...因为如果Rs("myField")为null,则在第二个条件中出现错误,将null与0进行比较.所以我通常最终会这样做:
dim myField
if isNull(Rs("myField")) then
myField = 0
else
myField = Rs("myField")
end if
if myField <> 0 then
...
Run Code Online (Sandbox Code Playgroud)
显然,冗长是非常可怕的.看看这个庞大的代码库,我发现最好的解决方法是使用原始程序员编写的一个函数,名为TernaryOp,它基本上采用三元运算符式功能,但我仍然坚持使用一个不会的临时变量在功能更全面的语言中是必要的.有没有更好的办法?VBScript中确实存在一些超级秘密的短路方法吗?
我想使用VBScript解压缩.zip文件,只是它总是一台没有外部应用程序的新计算机.现在我知道Windows XP和2003有一个内部.zip文件夹选项,所以我想我可以通过VBScript使用它来提取文件.
我该怎么做?
我试过了:
Set objShell = CreateObject("Shell.Application")
Set SrcFldr = objShell.NameSpace(fileName)
Set DestFldr = objShell.NameSpace(appDir)
DestFldr.CopyHere(SrcFldr)
Run Code Online (Sandbox Code Playgroud)
哪个没用.可能是什么问题呢?
这可能只是一厢情愿的想法......
有什么方法可以在调用之前检查是否定义了ASP/VBScript函数?
我在许多网站上工作的文件可以追溯到2000年.这些网站随着时间的推移有机增长,导致大量孤立的网页,包括文件,图像,CSS文件,JavaScript文件等......这些孤立的文件导致一些问题包括可维护性差,可能存在安全漏洞,客户体验不佳以及像我这样疯狂地驾驶OCD/GTD怪胎.
这些文件数量为数千个,因此完全手动解决方案是不可行的.最终,清理过程需要相当大的质量保证工作,以确保我们不会无意中删除所需的文件,但我希望开发一种技术解决方案来帮助加快手动工作.此外,我希望将流程/实用程序放在适当的位置,以帮助防止将来发生这种混乱局面.
环境考虑因素:
在开始之前,我想从其他成功导航过类似过程的人那里得到一些反馈.
具体我正在寻找:
我不是在寻找:
我在连接到访问MDB数据库的VBScript时遇到问题.我的平台是Vista64,但其中大部分资源都用于ASP/IIS7.
很简单,我无法连接它.我收到以下错误:800A0E7A - "无法找到提供程序.可能未正确安装"
我的代码是:
Set conn = CreateObject("ADODB.Connection")
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.MDB"
conn.Open strConnect
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经运行了%WINDIR%\ System32\odbcad32.exe来尝试在32位模式下配置驱动程序,但它还没有完成.任何建议将不胜感激
作为一个补充,我试图让这个.vbs脚本通过双击运行,并让它做它的事情.此代码未嵌入到另一个lang /脚本中.
我用VBscript创建了文件夹.当我给出一个文件夹路径时,脚本只创建最后一个文件夹,如果最后一个文件夹不存在,它将失败...我需要一个vbscript代码来单独创建整个文件夹结构.像unix中的mkdir -p
在使用这种脚本规划新项目时,Powershell和VBScript之间的主要区别是什么让我从一个到另一个选择?
我已经创建了一个.vbs文件来在Outlook中创建一个文件夹.我已经从MSDN中复制了大部分脚本,并获得了"预期的语句结束"错误代码800A0401响应.
Option Explicit
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myNewFolder As Outlook.Folder
Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myNewFolder = myFolder.Folders.Add("Postini")
Wscript.Echo "Folder created"
Wscript.Quit
Run Code Online (Sandbox Code Playgroud)
以前从未创建过.vbs脚本.不知道我错过了什么.
Windows 7 64位和Outlook 2010.以本地管理员身份运行.
我在VBScript初学者.我GOOGLE了它和认识了,我们可以从命令行由下面的命令执行运行VBScript:
例如,我的vbscript名称是Converter.vbs&它出现在文件夹中D:\VBS.
我可以通过以下方式运行:
CScript "D:\VBS\Converter.vbs"
Run Code Online (Sandbox Code Playgroud)
要么
WScript "D:\VBS\Converter.vbs"
Run Code Online (Sandbox Code Playgroud)
现在,我想上面执行VBScript 没有 Cscript或Wscript只需键入VBscript的名称即转换器的名称命令.
我不希望指定VBSCRIPT每次的完整路径.
任何人都可以请指导我该怎么做?
vbscript ×10
asp-classic ×3
scripting ×3
windows ×3
adodb ×1
asp.net ×1
defined ×1
function ×1
gtd ×1
ms-access ×1
oledb ×1
outlook-2010 ×1
powershell ×1
vba ×1
zip ×1