Внешний интерпретатор Javascript
День добрый может кто сталкивался с подобным вопросом и сможет проконсультировать или хотя бы направить.
Пример: Имеется файл a.js в нем скрипт:
<script language=JavaScript>
i = 0
while (i <= 5){
document.write('Шаг № ' + i)
document.write('<br>')
i++;
}
</script>
В командной строке (ОС не важна) запускается внешний интерпретатор с путями к файлу в результате получаем другой файл с содержимым: Код:
Шаг № 0Может кто знает каким образом можно реализовать подобную задачу, заранее спасибо. |
WSH
|
Цитата:
Код:
document.write |
' VBScript
Dim FSO, F, ExecuteInfo, ReadString, Counter
Const setRead = 1, setWrite = 2, useDefault = -2
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
FSO.CreateTextFile "test.txt"
Set F = FSO.GetFile("test.txt")
Set ExecuteInfo=F.OpenAsTextStream(setWrite, useDefault)
Counter = 0
While Counter <= 5
Counter = Counter +1
ExecuteInfo.WriteLine "Строка " & Counter
Wend
ExecuteInfo.Close
Set ExecuteInfo = F.OpenAsTextStream(setRead, useDefault)
ReadString = ExecuteInfo.ReadLine
ExecuteInfo.Close
Код на VBScript (WSH). Сохраняется с расширением .vbs |
Цитата:
Цитата:
Цитата:
Может я не корректно поставил вопрос, но смысл в том что бы выполнить именно Javascript (который используется в web проектировании) Код который я предоставил всего лишь пример и не является прямой задачей которую нужно решить. Посколку Javascript работает в браузере, может существую командная строка для работы с ними? Или может существуют интерпретаторы на php или петоне (хотя в данном случае целый пласт функций не будет работать). |
Цитата:
Цитата:
|
Я написал в пример, одиного из способов как можн решить вашу проблему.
Этот код написан на VBScript, можно и на JScript, но во всех случаях это будет не кроссплатформенно. На JScript:
var fso, f, setRead, setWrite = 2, counter = 0;
f = fso.CreateTextFile("c:\\text.txt", true);
fso = new ActiveXObject("Scripting.FileSystemObject");
setRead = fso.OpenTextFile("c:\\text.txt", setWrite, true);
function CreateFile(){
var fso, useText;
fso = new ActiveXObject("Scripting.FileSystemObject");
useText = fso.CreateTextFile("c:\\text.txt", true);
while(counter<= 5){
useText.WriteLine("Строка");
}
useText.Close();
}
Если вам нужна кроссплатформенность, то как-то так можно
<form name="forma" action="$_SERVER['PHP_SELF']" method="post">
<textarea style="width: 200px; height: 100px" name="text"></textarea>
<input type="text" value="filename" name="name">
<input type="submit" value="Ok">
<input type="hidden" name="create" value="Ok">
</form>
<script type="text/javascript">
var counter = 0;
while(counter++ <= 5){
document.forma.text.value += 'строка ' +counter+ '\n';
}
</script>
<?php
if ($create){
$openfile = fopen("$name", "w");
fwrite($openfile, $text);
fclose($openfile);
}
?>
|
Вы можете использовать hta (Internet Explorer HTML Application) или виджет Оперы.
В обоих случаях получите stand-alone приложение с js + DOM + BOM. Разница: эксплорер даст помимо этого вышеупомянутый WSH, да и сделать hta проще простого; Опера - нормальный яваскрипт и кроссплатформенность. Так или иначе, любым из этих приложений можно получить адрес скрипта из командной стоки и запустить в себе. |
Цитата:
Всем Почему все ваши примеры завязаны на записи в файл? Ведь есть стандартный вывод на консоль. Система умеет перенаправлять его в файл: Код:
cscript script.js > result.txt |
В чем проблема создать скажем *.bat файл, и прописать путь в переменных средах (для Win), или установить *nginx и использовать Node.js (если уже так хочется JavaScript).
Но выводить данные через консоль лучше на стороне сервера с использованием PHP + SQL |
| Часовой пояс GMT +3, время: 02:01. |