Stapelüberlauf ist kein kostenloser Code-Schreibservice. Beim nächsten Mal bitte zuerst etwas selbst ausprobieren.
Bitte ändern Sie den Dateinamen und Pfad in der dritten Zeile dieses kleinen Batch-Skript.
@echo off
setlocal EnableDelayedExpansion
set "InputFile=C:\Temp\TestFile.txt"
if not exist "%InputFile%" goto :EOF
set "TempFile=%TEMP%\TestFile.tmp"
if exist "%TempFile%" del "%TempFile%"
for /F "usebackq delims=" %%I in ("%InputFile%") do (
set "Line=%%I"
if "!Line:~-3,1!" == ":" set "Line=!Line:~0,-2!0!Line:~-2!"
if "!Line:~-6,1!" == ":" set "Line=!Line:~0,-5!0!Line:~-5!"
if "!Line:~-9,1!" == "|" set "Line=!Line:~0,-8!0!Line:~-8!"
if "!Line:~-12,1!" == "-" set "Line=!Line:~0,-11!0!Line:~-11!"
if "!Line:~-15,1!" == "-" set "Line=!Line:~0,-14!0!Line:~-14!"
if "!Line:~-18,1!" == "|" set "Line=!Line:~0,-17!0!Line:~-17!"
echo !Line!>>"%TempFile%"
)
move /Y "%TempFile%" "%InputFile%"
endlocal
Diese Batchdatei nur überprüft, wenn ein Zeichen an einer bestimmten Position relativ zum Ende der Zeile gleich ist ein Vergleich und die erwarteten Zeichen und fügt eine führende Null, wenn dies nicht der Fall ist, weil das Datums-/Uhrzeitwert Recht Position in Zeile hat nur 1 Ziffer.
Um die verwendeten Befehle und ihre Funktionsweise zu verstehen, öffnen Sie ein Eingabeaufforderungsfenster, führen Sie die folgenden Befehle aus und lesen Sie alle Hilfeseiten, die für jeden Befehl angezeigt werden, sorgfältig durch.
del /?
echo /?
endlocal /?
for /?
goto /?
if /?
move /?
set /?
... am wichtigsten hier, um die Substitutionen zu verstehen.
setlocal /?
Und auch Microsoft Artikel über Using command redirection operators.
Verwenden Sie ** wirklich ** immer noch MS-DOS? –