Witam wszystkich serdecznie.
Proszę o pomoc w nastęującym problemie:
potrzebuję skrypcik który:
-
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ń)
-
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…