Код:Windows Script Host "не может найти файл" исключение в 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 = ...».
Может ли кто-нибудь сказать мне, что в этом плохого? Есть ли разница между OpenAsTextStream
и OpenTextFile
методами для XP (кроме вызывающего)?
Моя догадка заключается в том, что у него что-то испортилось с помощью метода CreateTextFile
или OpenTextFile
, как у другого правильного имени метода в WinXP или другого пути в WinXP или что-то еще. К сожалению, у меня нет WinXP и я не могу проверить его правильно.
UPD: Только что заметил, что в строке 15 отсутствует точка с запятой. Может ли это быть причиной такого поведения? (Я сомневаюсь)
Это действительно может быть точка. Я попробую это, как только пользователь будет в сети. Однако это должно быть «\\» не «\». – sander
Строки Visual Basic не похожи на строки Java, например, единственный символ, который нуждается в экранировании, «и вы избегаете его как« »в строке – user5035265
Я не уверен насчет VB, но, согласно MSDN, должны быть двойные обратные косые черты (например, «C: \\ myfolder \\») в путях файлов, а не в одиночных (WSH выдает исключение, когда вы пытаетесь использовать пути с одиночными backslasges). – sander