【问题标题】:Windows Script Host "cannot find file" exception in windows XP only仅在 Windows XP 中的 Windows 脚本宿主“找不到文件”异常
【发布时间】:2015-12-27 22:08:51
【问题描述】:

代码:

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

【问题讨论】:

    标签: javascript wsh filesystemobject windows-xp-sp3


    【解决方案1】:

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

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

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

    【讨论】:

    • 这实际上是重点。用户在线后,我会尝试此操作。但是它应该是“\\”而不是“\”。
    • Visual Basic 字符串不像 Java 字符串,例如唯一需要转义的字符是 ",而您在字符串中将其转义为 ""
    • 我不确定 VB,但是,根据 MSDN,文件路径中必须有双反斜杠(例如“C:\\myfolder\\”),而不是单个反斜杠(WSH 抛出当您尝试使用带有单个反斜杠的路径时出现异常)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2018-03-24
    • 2017-11-19
    • 2012-11-21
    相关资源
    最近更新 更多