Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 23
Благодарности: 6

Профиль | Отправить PM | Цитировать


Если поставлена цель выполнить задачу именно нативными компонентами Windows, идущими "из коробки", то первое, что приходит в голову - распарсить представленную в 1 посте строку JSON естественным способом, задействовав WSH JScript. Решение, конечно, не в одну строку, и представляет скорее академический интерес. Замечу, что в JSON пробел, как перед last, обычно не ставится. Для реализации на CMD/BAT - останется только "завернуть" код JScript в соответствующий командный файл.
Итак, первое - сохраняем в текстовый файл PRIMER.txt показанную выше строку JSON. Далее сохраняем в файл Eval.bat (или Eval.cmd) следующий код:
Код: Выделить весь код
@set @x=0 /*&echo off&cscript /nologo /e:javascript %~dpf0 %*
pause
goto:eof */

if(WScript.Arguments.Count()>0){
	var sVal;
	var oFso=new ActiveXObject("Scripting.FileSystemObject");
	var sPath=WScript.Arguments(0);
	if(oFso.FileExists(sPath)){
		try{
			var sJson=oFso.OpenTextFile(sPath).ReadAll();
		}catch(e){
			WScript.StdOut.WriteLine('File read error: '+sPath);
			WScript.Quit();
		}
		try{
			eval('var oJson='+sJson);
			sVal=oJson.ticker.last;
		}catch(e){
			WScript.StdOut.WriteLine('JSON evaluation error: '+sJson);
			WScript.Quit();
		}
		WScript.StdOut.WriteLine('Evaluated: '+sVal);
		var sDest = sPath+'_eval.txt';
		try{
			var oTextStream=oFso.CreateTextFile(sDest,true);
			oTextStream.Write(sVal);
			oTextStream.Close();
		}catch(e){
			WScript.StdOut.WriteLine('File save error: '+sDest);
			WScript.Quit();
		}
		WScript.StdOut.WriteLine('Result saved to file: '+sDest);
	}else{
		WScript.StdOut.WriteLine('File not found: '+sPath);
	}
}else{
	WScript.StdOut.WriteLine('Drag and Drop file with text');
}
Что касается пробела перед last - если это была не опечатка, то строку в коде
Код: Выделить весь код
sVal=oJson.ticker.last;
следует заменить на
Код: Выделить весь код
sVal=oJson.ticker[' last'];
Перетаскиваем в проводнике файл PRIMER.txt на файл Eval.bat. Либо запускаем Eval.bat с параметром, в котором передаем путь к файлу PRIMER.txt. Если все пройдет без ошибок, результат будет показан в окне, и сохранен в файл PRIMER.txt_eval.txt. Если с ошибками - пояснение будет показано в окне. Допилить скрипт под свои нужды, выкинув лишние проверки, не составит особого труда.


Источники:
http://forum.script-coding.com/viewtopic.php?pid=33067
http://www.script-coding.com/WSH/FileSystemObject.html
http://forum.script-coding.com/viewtopic.php?id=2886
http://forum.script-coding.com/viewtopic.php?id=6304

Отправлено: 21:41, 07-02-2014 | #6