每个isn的VBScript';行不通
我无法使VBScript中的以下函数正常工作。我正在尝试获取文件夹中的所有文件,并通过循环获取编号最高的文件。(文件名格式为log_XXX.txt)我遇到的问题是,对于每个循环,代码从未进入我的每个isn的VBScript';行不通,vbscript,Vbscript,我无法使VBScript中的以下函数正常工作。我正在尝试获取文件夹中的所有文件,并通过循环获取编号最高的文件。(文件名格式为log_XXX.txt)我遇到的问题是,对于每个循环,代码从未进入我的。我不熟悉VBScript,但我似乎不明白为什么它不起作用 Function GetFileNumber(folderspec) Dim fso, f, f1, fc, s, tempHighNum Set fso = CreateObject("Scripting.FileSystemObj
。我不熟悉VBScript,但我似乎不明白为什么它不起作用
Function GetFileNumber(folderspec)
Dim fso, f, f1, fc, s, tempHighNum
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
WScript.Echo f.Files.Count : rem prints 3
Set fc = f.Files
WScript.Echo fc.Count : rem prints 3
Set tempHighNum = "000"
For Each f1 in fc
WScript.Echo f1.Size : rem does not print
WScript.Echo f1.Type : rem does not print
WScript.Echo f1.Name : rem does not print
s = Right(f1.name,3)
IF NOT(ISNULL(s)) THEN
IF (s > tempHighNum) THEN
tempHighNum = s
END IF
END IF
Next
GetFileNumber = tempHighNum
End Function
更改此行:
Set tempHighNum = "000"
对下列事项:
tempHighNum = "000"
您正在尝试将tempHighNum变量设置为字符串类型。因此,您不应该使用Set关键字。只有在将对象类型分配给变量时才需要Set。我不确定您的脚本是如何工作的,所以我为您准备了这个HTML应用程序。它使用一个名为Dir.Bat
的批处理文件,该批处理文件位于C:\batch
中,使一个名为Data.Txt
的文件位于C:\Temp
中。然后剧本开始了
结束脚本逐行读取文件Data.Txt。在读取每一行时,使用两条split语句来分隔文本文件名中的字符串。之后,我将包含数字的字符串收集到变量ListCol
中,以测试越来越大的数字。最后,我得到了我在原始变量temphhighnum
中放置的最大数字。我将发布HTA文件和Dir.Bat文件。我知道我没有将脚本编写为使用参数的函数,因此如果您确实需要使用参数,我将尝试通过更改HTA文件来帮助您,使其能够在文本框中输入路径和文件名。这应该会让你更容易理解
改变和使用。我添加并更改了一两个东西,使其运行更顺畅。
我不知道你的脚本是如何工作的,所以我为你把这个HTML应用程序放在一起。它使用一个名为Dir.Bat
的批处理文件,该批处理文件位于C:\batch
中,使一个名为Data.Txt
的文件位于C:\Temp
中。然后剧本开始了
结束脚本逐行读取文件Data.Txt。在读取每一行时,使用两条split语句来分隔文本文件名中的字符串。之后,我将包含数字的字符串收集到变量ListCol
中,以测试越来越大的数字。最后,我得到了我在原始变量temphhighnum
中放置的最大数字。我将发布HTA文件和Dir.Bat文件。我知道我没有将脚本编写为使用参数的函数,因此如果您确实需要使用参数,我将尝试通过更改HTA文件来帮助您,使其能够在文本框中输入路径和文件名。这应该会让你更容易理解
改变和使用。我添加并更改了一两个东西,使其运行更顺畅
<HTML><!-- C:\HTML_and_HTA_CODE_EXAMPLES\ATest.Hta -->
<HEAD>
<TITLE>ATest.Hta</TITLE>
<HTA:APPLICATION ID="HTA MyApp"
APPLICATIONNAME="Help4Saul Dolgin"
BORDER ="thick"
BORDERSTYLE ="complex"
CAPTION ="yes"
CONTEXTMENU ="no"
ICON ="http://Your URL/your icon.ico"
INNERBORDER ="yes"
MAXIMIZEBUTTON ="yes"
MINIMIZEBUTTON ="yes"
NAVIGABLE ="no"
SCROLL ="no"
SHOWINTASKBAR ="yes"
SINGLEINSTANCE ="yes"
SYSMENU ="yes"
VERSION ="1.0"
WINDOWSTATE ="Normal"/>
</HEAD>
<style>
.ExBt21 {background:"#E0E0E0";Color:"red";}/* For Exit Button */
.Spn4 {font-family:"arial";font-weight:"bold";Color:"blue"}
.Spn2 {Color:"red"}
.tAr1 {font-family:"arial";font-weight:"bold";Color:"blue"}
</style>
<SCRIPT Language="VBScript">
Sub GetFileNumber
Dim FSO, f, fc, tempHighNum, strLine, objSHO, line
Dim DataArr, Data1Arr, Data2Arr, ListCol
fc=""
ListCol=""
tempHighNum=000
Set objSHO=CreateObject("WScript.Shell")
objSHO.run "C:\Batch\Dir.bat"
Set FSO = CreateObject( "Scripting.FileSystemObject" )
Set f = FSO.OpenTextFile("c:\Temp\Data.Txt", "1")
Do Until f.AtEndOfStream
fc = fc & f.ReadLine & vbLf
Loop
tArea1.innerHTML=fc
Data1Arr = Split(fc,vbLf)
Count=UBound(Data1Arr)
For x=0 To Count
DataArr = Split(Data1Arr(x),".")
If x <= Count-1 Then
Data2Arr = Split(DataArr(0),"_")
ListCol = ListCol & Data2Arr(1) & vbLf
If Data2Arr(1) > tempHighNum Then
tempHighNum = Data2Arr(1)
End If
End If
Next
Span2.innerHTML=tempHighNum
End Sub
Sub ExtBtn:Window.close:End Sub' Exit Script For Window
</SCRIPT>
<BODY bgcolor="#D0D0D0">
<button OnClick="GetFileNumber">Button To Press</button><br/>
<span id="Span1" class="Spn1">The biggest No. is: </span><span id="Span2" class="Spn2"></span><br/><br/>
<span Id="Span3" Class="Spn3">Dir.Bat looks in: </span><span Id="Span4" Class="Spn4">C:\Temp\Log_???.Txt</span><br/>
<textarea Id="tArea1" class="tAr1" rows="10"></textarea><br/><br/>
<input id="ExBtn21" class="ExBt21" type="Button" name="ExitBtn21" OnClick="ExtBtn" value=" -Exit- "/><!-- Exit Button -->
</BODY>
</HTML>
@Echo Off
Dir/B c:\Temp\Log_???.Txt>c:\Temp\Data.Txt