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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как из строки в .txt вывести символы "которые там обновляются"в другой .txt

Ответить
Настройки темы
CMD/BAT - Как из строки в .txt вывести символы "которые там обновляются"в другой .txt

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


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

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


Пример:

PRIMER.txt

{"ticker":{"high":20.48888,"low":17.699,"avg":19.09394,"vol":10184093.59887,"vol_cur":543175.30579," last":18.2,"buy":18.29208,"sell":18.28,"updated":1391769880,"server_time":1391769881}}

Нужно вывести цифры после "last":
В примере это 18.2

Отправлено: 15:27, 07-02-2014

 

Ветеран


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

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


Bombastig, С помощью sed:
Код: Выделить весь код
sed -rn "s/.*\"last\":([^,]*).*/\1/p" primer.txt
Powershell:
Код: Выделить весь код
(gc primer.txt) -replace '.*"last":([^,]*).*','$1'

Последний раз редактировалось Foreigner, 07-02-2014 в 20:31.


Отправлено: 20:22, 07-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Цитата Foreigner:
Powershell: »
Зачем оффтопиком?

Отправлено: 20:33, 07-02-2014 | #3


Ветеран


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

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


Конечно, удобней. Я про другое: пусть будет обычным оформлением (как Вы уже исправили) — ведь язык Вы указали.

Отправлено: 20:50, 07-02-2014 | #4


Ветеран


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

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


Цитата Foreigner:
А так оффтопик? »
Нет. Но во втором посте понятнее.

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


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


Сообщения: 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


Ветеран


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

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


Код: Выделить весь код
:: (для "чисто" пакетного файла)

@echo off
set /p text=<PRIMER.txt
for %%i in (%text%) do (
 for /f "tokens=1* delims=:" %%j in ("%%i") do (
  if %%j=="last" (
   set /p last="%%k"<nul
  )
 )
)
pause>nul

Последний раз редактировалось Georgio, 08-02-2014 в 05:04.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:54, 08-02-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как из строки в .txt вывести символы "которые там обновляются"в другой .txt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужно создать "батник" - вырезать из "2.txt" первых n строк и вставить их в "1.txt" temphard Скриптовые языки администрирования Windows 12 10-01-2014 18:36
CMD/BAT - [решено] Копирование\перенос строк с 1.txt до определённой строки\секции в 2.txt. crimes Скриптовые языки администрирования Windows 7 11-06-2013 14:42
Разное - [решено] Возвращение в меню "Создать" пункта "Текстовый документ", ассоциирование с TXT Pavla Microsoft Windows 7 16 10-07-2012 07:47
CMD/BAT - вытащить из 3-x txt файлов строки в 4-й txt и отправить его в шару на сервер campbell Скриптовые языки администрирования Windows 1 10-11-2011 09:59
[решено] Как правельно написать файл "robots.txt" Spo1iler Тест-форум 1 15-08-2010 22:04




 
Переход