javascript - 仅 Windows XP 中的 Windows 脚本宿主 "cannot find file"异常

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

最佳答案

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

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

如果有效,Win7 可能会自动标准化文件路径。

关于javascript - 仅 Windows XP 中的 Windows 脚本宿主 "cannot find file"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32860730/

相关文章:

javascript - socket.io + node.js 的内存泄漏

javascript - 使用 Highcharts 中的图像作为 xAxis 标签

vbscript - 使用 CFExecute 运行 VBScript 会引发错误,但通过命令行可以正常工作

excel - 将 FSO 设置为 FileSystemObject 与 Scripting.FileSystemObject

c++ - 在 C++ 中使用 Scripting.FileSystemObject 时,#import 之后的下一步是什么?

asp-classic - FileSystemObject 的文件权限 - CScript.exe 说的是一件事,经典 ASP 说的是另一件事

javascript - 将参数传递到 Grunt 任务中调用的文件中?

使用 JScript 在 WSH 中提示对话框?

jscript - 使 HTA 文件以管理员身份运行(提升)

javascript - 将 C# 字符串放入 asp.net-mvc View 中的 javascript 字符串时正确编码