2016-03-29 5 views
0

Wer kann mir helfen, wie anhängen „Null“, wenn es einstelligen Datum/Uhrzeit vom txt-Datei ausgegeben unten:Wie wird die führende "Null" bei einstelligen Datums- und Uhrzeitwerten in die Textdatei eingefügt?

C|000001|56600|MMB-W1S0033|R|||||16-3-2|9:35:1| 
P|000001|56600|MMB-W1S0033||||||16-3-2|9:35:2| 
C|000001|56600|MMB-W1S0210|R|||||16-3-2|9:35:3| 
P|000001|56600|MMB-W1S0210||||||16-3-2|9:35:4| 

ändern unten zu werden?

C|000001|56600|MMB-W1S0033|R|||||16-03-02|09:35:01| 
P|000001|56600|MMB-W1S0033||||||16-03-02|09:35:02| 
C|000001|56600|MMB-W1S0210|R|||||16-03-02|09:35:03| 
P|000001|56600|MMB-W1S0210||||||16-03-02|09:35:04| 
+2

Verwenden Sie ** wirklich ** immer noch MS-DOS? –

Antwort

1

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.

+0

hallo mofi..wirklich danke für Ihre schnelle Hilfe, es funktioniert wie erwartet ... ehrlich gesagt bin ich nicht zu gut in Dos-Batch-Programmierung :( – cyberjan

Verwandte Themen