Внешний интерпретатор 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:14. |