Компьютерный форум 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=294806)

Haart 01-02-2015 13:28 2464659

Перенос "комментариев" из определенных строк файла - в другой файл.
 
У меня есть код
Код:


FUNC VOID DIA_SLD_6_LOCATION_Info()
{       
        AI_Output (other, self, "DIA_SLD_6_LOCATION_15_00"); //Bewacht ihr die Bauern?
        AI_Output (self, other, "DIA_SLD_6_LOCATION_06_01"); //Wir bewachen nicht nur Onars Hof, sondern das ganze Tal hier.
        AI_Output (self, other, "DIA_SLD_6_LOCATION_06_02"); //Onar will, dass wir jeden, der hier Mist baut, hart rannehmen. Also benimm dich.
};

И мне надо перенести комментарии из одного файла в друго, что-бы в итоге выглядело так.
файл name0.txt
Код:


FUNC VOID DIA_SLD_6_LOCATION_Info()
{       
        AI_Output (other, self, "DIA_SLD_6_LOCATION_15_00");
        AI_Output (self, other, "DIA_SLD_6_LOCATION_06_01");
        AI_Output (self, other, "DIA_SLD_6_LOCATION_06_02");
};

и файл name1.txt
Код:


//Bewacht ihr die Bauern?
//Wir bewachen nicht nur Onars Hof, sondern das ganze Tal hier.
//Onar will, dass wir jeden, der hier Mist baut, hart rannehmen. Also benimm dich.

Естественно файлы такими маленькими не бывают, и код до 5000 строк примерно.


В общем дело такое, есть код...
Код:

@echo off
 
for /f "tokens=1,2 delims=;" %%i in ('"type "name0.txt"& del "name0.txt""') do (
 echo %%i;>>"name0.txt"
 for /f "tokens=*" %%k in ("%%j") do (
  echo %%k>>"name1.txt"
  )
 )
 
exit/b

Переносит комментарии из одного файла в другой, все работает, но... Но работает нормально, если есть только строки
Код:

AI_Output (self, other, "DIA_SLD_6_LOCATION_06_02"); //Onar will, dass wir jeden, der hier Mist baut, hart rannehmen. Also benimm dich.
А если есть лишние строки, вроде скобок, if-else и иных функций, то добавляет к ним знак точки с запятой - ;
Что в итоге конкретно портит код и приходится его дольше чистить, чем вручную выдрать комменты из файла.

Может кто помочь доработать bat код, сам я в нем дуб дубом, ничего не понимаю.

З.Ы. Если у кого возникнет вопрос, а нафиг вообще выдирать комментарии, то скажу так, это вовсе не комментарии - это диалоги, просто в коде они написаны так.

Georgio 01-02-2015 15:59 2464743

Цитата:

Цитата Haart
Может кто помочь доработать bat код, сам я в нем дуб дубом, ничего не понимаю. »



Мои коды трудно понять даже специалисту:)!


Код:

@echo off

for /f "delims=" %%i in ('"2>nul (type "name0.txt"& del "name0.txt" "name1.txt")"') do (
 for /f "tokens=1* delims=;" %%j in ("%%i") do (
  >>"name0.txt" (if "%%j" equ "%%i" (echo.%%j) else (echo %%j;))
  @>>"name1.txt" (for /f "tokens=*" %%l in ("%%k") do @echo %%l)
  )
 )

exit/b


P.S. В ближайшее время отвечу Вам и на другом форуме.
P.P.S. Дабы не моделировать "чёрный ящик", на этом форуме всё-таки принято выкладывать образцы Ваших реальных файлов, к тому же запакованных в архив.

Haart 01-02-2015 16:10 2464749

Вложений: 1
Цитата:

Цитата Georgio
P.S. В ближайшее время отвечу Вам и на другом форуме.
P.P.S. Дабы не моделировать "чёрный ящик", на этом форуме всё-таки принято выкладывать образцы Ваших реальных файлов, к тому же запакованных в архив. »

Ок, спасибо.

З.ы. архив с батником, и файлами.

Georgio 01-02-2015 18:34 2464822

Haart, вот поработал с Вашим реальным файлом и уже внёс изенение в код. Теперь код такой:


Код:

@echo off

for /f "delims=" %%i in ('"2>nul (type "name0.txt"& del "name0.txt" "name1.txt")"') do (
 for /f "tokens=1* delims=;" %%j in ("%%i") do (
  >>"name0.txt" (if "%%j" equ "%%i" (echo.%%j) else (echo %%j;))
  @>>"name1.txt" (for /f "tokens=*" %%l in ("%%k") do @if "%%l" neq "" echo %%l)
  )
 )

exit/b


.


Время: 00:09.

Время: 00:09.
© OSzone.net 2001-