SOLVED: [DOS/BATCH] operacje na plikach

Witam wszystkich serdecznie.

Proszę o pomoc w nastęującym problemie:

potrzebuję skrypcik który:

  1. z danego katalogu (np. D:\temp) wrzuca do pliku tekstowego (mojalista.txt) nazwy wszystkich plików z rozszerzeniem .log (przy czym w pliku mają być same nazwy bez rozszerzeń)

  2. następnie tworzy kolejny plik który wyglądać ma mniej więcej tak:

11|AA|pierwsza_nazwa_z_pliku_mojalista |333| |dd|

11|AA|druga_nazwa_z_pliku_mojalista |333| |dd|

11|AA|ostatnia_nazwa_z_pliku_mojalista |333| |dd|

przy czym część przed nazwą pliku oraz po znaku | za nazwą pliku jest zawsze identyczna, natomiast pole |…_nazwa_z_pliku_mojalista | musi mieć zawsze równo 25 znaków niezależnie ile miała nazwa pliku. Znaczy żebym dokładnie wyjaśnił nazwa pliku plus spacje w tym polu muszą razem zajmowac 25 znaków.

I muszę to miec napisane najlepiej w batchu, plus ewentualnie awk pod windows. Lub coś podobnego do awk w sensie żeby bez instalacji uruchomiło mi się to na każdym komputerze…

OK, znalazłem odpowiedź, gdyby kogoś zainteresowało to powinno to wygladać mniej więcej tak:

@Echo Off

SetLocal EnableDelayedExpansion

Set _Source=D:\Temp

Set _OutputDir=D:\OUT

Set _CCC=%_OutputDir%\ccc.txt

Set _Ofile=%_OutputDir%\Output.txt

If Exist "%_CCC%" Del "%_CCC%"

If Exist "%_Ofile%" Del "%_Ofile%"

For /F "Tokens=* Delims=" %%I In ('Dir /A-D /B "%_Source%\*.log"') Do >>"%_CCC%" Echo.%%~nI

For /F "Tokens=* Delims=" %%I In ('Type "%_CCC%"') Do (

   Set _Temp=%%I E

   Set _Temp=!_Temp:~0,25!

   >>"%_Ofile%" Echo.33^|EE^|!_Temp!^|77^|CC^|

)

A ja w sumie nawet coś podobnego stworzyłem, ale wyłożyłem się na EnableDelayedExpansion o którym to nic wcześniej nie wiedziałem…