0
代碼:Windows腳本宿主在Windows XP中「無法找到文件」異常僅
var regs = {'E':/[e]/g};//in real code here are actual regular expressions
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objShell = new ActiveXObject("Shell.Application");
var lib, new_file;
var cur_path = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.length - WScript.ScriptName.length);
in_path = cur_path+'input';
out_path = cur_path+'output/';
lib = objShell.NameSpace(in_path);
items = lib.Items()
n=0;
for (i=0;i<items.Count;i++)
{
fitem = items.Item(i);
cur_file = fso.OpenTextFile(in_path + '/' + fitem.Name, 1);
new_file = fso.CreateTextFile(out_path + fitem.Name, true);
while (cur_file.AtEndOfStream == false) {
var line = cur_file.ReadLine();
for (key in regs) {
line = line.replace(regs[key], key);
}
new_file.WriteLine(line);
}
cur_file.Close();
new_file.Close();
n++;
}
WScript.Echo("Total files found/converted:" + i + "/" + n);
與腳本文件夾包含input
和output
文件夾,在文件夾input
一些樣品。
我需要它在WinXP中工作。
腳本在Win7中完美工作,但用戶聲稱在Windows XP中拋出異常「找不到文件」(或類似的東西),並說「在第22行」。腳本中的第22行是「cur_file = ...」和「new_file = ...」之間的空行。
誰能告訴我這有什麼問題嗎?對於XP(調用者除外),OpenAsTextStream
和OpenTextFile
方法之間是否有任何區別?
我的猜測是,它有一些與CreateTextFile
或OpenTextFile
方法像WinXP中的另一個正確的方法名稱或在WinXP或別的什麼別的路徑中搞砸了。不幸的是,我沒有WinXP,無法正確測試它。
UPD:剛纔注意到我在第15行中有一個缺失的分號。這可能是這種行爲的原因嗎? (我懷疑)
這實際上可能是重點。一旦用戶在線,我會盡快嘗試。但它應該是「\\」而不是「\」。 – sander
Visual Basic字符串不像Java字符串,例如唯一需要轉義的字符是「並且將字符串轉義爲字符串」 – user5035265
我不確定VB,但根據MSDN,必須有雙反斜槓(例如「C:\\ myfolder \\」)在文件路徑中,而不是單個文件(當您嘗試使用具有單個反符號的路徑時,WSH會引發異常)。 – sander