簡體   English   中英

僅Windows XP中的Windows腳本宿主“找不到文件”異常

[英]Windows Script Host “cannot find file” exception in windows XP only

碼:

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);

帶有腳本的文件夾包含inputoutput文件夾, input文件夾中包含一些樣本。

我需要它才能在WinXP中工作。

該腳本在Win7中運行完美,但是用戶聲稱在Windows XP中會拋出異常“找不到文件”(或類似的東西),並說“第22行”。 腳本中的第22行是“ cur_file = ...”和“ new_file = ...”之間的空白行。

誰能告訴我這是怎么了? XP的OpenAsTextStreamOpenTextFile方法之間有什么區別(調用者除外)?

我的猜測是,它與CreateTextFileOpenTextFile方法有些混亂,例如WinXP中的另一個正確方法名稱或WinXP中的其他路徑或其他名稱。 不幸的是我沒有WinXP,也無法正確測試。

UPD:剛剛注意到我在第15行中缺少分號。這是否可能是這種行為的原因? (我對此表示懷疑)

嘗試用反斜杠替換斜杠,例如:

cur_file = fso.OpenTextFile(in_path + '\' + fitem.Name, 1);

如果可行,Win7可能會自動規范化文件路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM