سؤال
وأنا لا يمكن الحصول على وظيفة التالية في VBScript للعمل. واني اسعى الى الحصول على كل الملفات في مجلد وحلقة من خلالهم للحصول على ملف المرقمة أعلى. (تنسيق اسم الملف هو log_XXX.txt) المشكلة أن أواجه هو أن الشفرة لم يدخل بلدي For Each
حلقة. أنا جديدة إلى 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 إلى نوع السلسلة. لذلك، يجب عدم استخدام لك <م> تعيين م> الكلمة. تعيين م> هو مطلوب فقط عند تعيين أنواع الكائنات إلى المتغيرات.
نصائح أخرى
وأنا لست متأكدا كيف السيناريو الخاص بك يعمل حتى أضع هذا الطلب HTML معا بالنسبة لك. ويستخدم ملف دفعي يسمى Dir.Bat
تقع في C:\Batch
مما يجعل Data.Txt
ملف يسمى تقع في c:\Temp
. ثم يأخذ النصي
على. السيناريو يقرأ خط ملف Data.Txt سطرا. كما تتم قراءة كل سطر وتستخدم بيانين انقسام لفصل سلسلة في اسم الملف النص. بعد ذلك أقوم بجمع تلك السلاسل تحتوي على أرقام في ListCol
متغير وأنا اختبار لأعداد أكبر وأكبر. وأخيرا يختتم مع أكبر عدد الذي أضع في tempHighNum
المتغير الأصلي الخاص بك. سأقوم ملف HTA وملف Dir.Bat. وأنا أعلم أنني لم أكتب نصي بوصفها وظيفة باستخدام المعلمة حتى إذا كنت حقا بحاجة إلى استخدام معلمة، وسوف نحاول مساعدتك عن طريق تغيير ملف HTA لتجعل من الممكن لدخول المسار واسم الملف في مربع نص. يجب أن تجعل من السهل على
تغيير واستخدامها. وأضفت وغيرت شيئا أو اثنين لجعلها تعمل أكثر سلاسة.
أنا لست متأكدا كيف السيناريو الخاص بك يعمل حتى أضع هذا الطلب HTML معا بالنسبة لك. ويستخدم ملف دفعي يسمى Dir.Bat
تقع في C:\Batch
مما يجعل Data.Txt
ملف يسمى تقع في c:\Temp
. ثم يأخذ النصي
على. السيناريو يقرأ خط ملف Data.Txt سطرا. كما تتم قراءة كل سطر وتستخدم بيانين انقسام لفصل سلسلة في اسم الملف النص. بعد ذلك أقوم بجمع تلك السلاسل تحتوي على أرقام في ListCol
متغير وأنا اختبار لأعداد أكبر وأكبر. وأخيرا يختتم مع أكبر عدد الذي أضع في tempHighNum
المتغير الأصلي الخاص بك. سأقوم ملف 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>
وملف Dir.Bat بجوار:
@Echo Off
Dir/B c:\Temp\Log_???.Txt>c:\Temp\Data.Txt