Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Заменить строки в текстовом файле (http://forum.oszone.net/showthread.php?t=227501)

aos 10-02-2012 13:16 1855535

Заменить строки в текстовом файле
 
Доброго времени суток! Есть такая задача: существует некий текстовый документ (card.txt) со следующим содержанием (кол-во строк и содержание меняется)
1045;196,66
1046;301,60
1047;344,45
1048;212,70
1050;-31,40
1052;212,40
требуется, сначала заменить запятые на точки, потом точку с запятой на запятые. После чего проверить, если после запятой значение положительное то вместо него поставить ноль, если отрицательное то просто убрать минус перед значением.

Реально ли такое сделать?

megaloman 10-02-2012 14:02 1855560

Код:

@Echo On
Set In=card.txt
Set InTmp=%In%.Tmp

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

Move /Y "%In%" "%InTmp%" >Nul

If %ErrorLevel% EQU 0 (
  FOR /F "usebackq tokens=1,2,3 delims=;," %%a IN ("%InTmp%") DO (
      If %%b GEQ 0 Echo %%a,0.%%c>>"%In%"
      If %%b LSS 0 Set /A bb=-%%b & Echo %%a,!bb!.%%c>>"%In%"
  )
  Del "%InTmp%" >Nul
)


aos 10-02-2012 14:24 1855580

Почти так, он меняет положительное значение на ноль но проблемма в том, что это суммы и они с копейками, то есть
Было
1045;196,66
1046;301,60
1047;344,45
1048;212,70
1050;-31,40
1052;212,40

После выполнения скрипта
1046,0.60
1047,0.45
1048,0.70
1050,31.40
1052,0.40

Как хотелось бы

1046,0
1047,0
1048,0
1050,31.40
1052,0

Заранее огромное спасибо!

aos 10-02-2012 14:45 1855601

Все разобрался, огромное спасибо!!!


Время: 14:03.

Время: 14:03.
© OSzone.net 2001-