Войти

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


Haart
01-02-2015, 13:28
У меня есть код


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

Ок, спасибо.

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

Georgio
01-02-2015, 18:34
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


.




© OSzone.net 2001-2012