var WshShell = WScript.CreateObject("WScript.Shell");
var BDir = WshShell.CurrentDirectory;
var UpDir = BDir.split("\\bin").join("");
var ServerRoot = UpDir.split("\\").join("/");
req = new ActiveXObject("Msxml2.XMLHTTP");
req.open("GET", UpDir+"\\conf\\httpd.portable.conf", false);
req.send(null); var httpd = req.responseText;
var compile = httpd.split("{$PORTABLEROOT}").join(ServerRoot);
var sfile = UpDir+"\\conf\\httpd.conf";
fso = new ActiveXObject("Scripting.FileSystemObject");
var htnew = fso.CreateTextFile(sfile, true);
htnew.Write(compile);
htnew.Close();
в результате выполнения скрипта происходит ошибка записи переменной compile в файл
переменная compile вполне корректна, при попытке вывести WshShell.Popup(compile) - выдаёт эту строку (текст) нормально
далее вместо htnew.Write(compile); подставляю htnew.Write("привет мир"); - получаю в файле строку привет мир, т.е. код рабочий, ну а хули он тогда ругается на то, что я передал ему конфиг апача как строку?
Принимал попытку экранировать текст через неведомую функцию взятую отсюда
var WshShell = WScript.CreateObject("WScript.Shell");
var BDir = WshShell.CurrentDirectory;
var UpDir = BDir.split("\\bin").join("");
var ServerRoot = UpDir.split("\\").join("/");
req = new ActiveXObject("Msxml2.XMLHTTP");
req.open("GET", UpDir+"\\conf\\httpd.portable.conf", false);
req.send(null); var httpd = req.responseText;
var compile = httpd.split("{$PORTABLEROOT}").join(ServerRoot);
var sfile = UpDir+"\\conf\\httpd.conf";
fso = new ActiveXObject("Scripting.FileSystemObject");
var htnew = fso.CreateTextFile(sfile, true);
htnew.Write(compile.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
htnew.Close();
один хуй выдаёт то же самое, а именно
import os
os.chdir("..")
serverpath = os.getcwd().replace("\\", "/")
os.chdir("conf")
data = open("httpd.portable.conf").read().replace("{$PORTABLEROOT}", serverpath)
f = open("httpd.conf", 'w')
f.write(data)
f.close()