Windows脚本主机仅在Windows XP中“找不到文件”异常

时间:2015-09-30 07:51:51

标签: javascript wsh filesystemobject windows-xp-sp3

代码:

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行丢失了分号。这可能是这种行为的原因吗? (我对此表示怀疑)

1 个答案:

答案 0 :(得分:1)

尝试用反斜杠替换斜杠,例如:

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

如果可行,Win7可能会自动规范化文件路径。