2016-03-29 13 views
0

誰でも以下のtxtファイル出力から一桁の日付/時間がある場合は「ゼロ」を追加する方法を私を助けることができます。テキストファイルの1桁の日付と時刻の値に先行する「ゼロ」を挿入する方法は?

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| 

変更は以下になるために?

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

**本当に**まだMS-DOSを使用していますか? –

答えて

1

スタックオーバーフローは、フリーコード書き込みサービスではありません。次回はまず自分で何かを試してみてください。

この小さなバッチスクリプトの3行目でファイル名とパスを変更してください。

@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 

行の末尾に特定の相対位置で文字が比較され、予想される文字等しく、そうでない場合、先頭にゼロを挿入する場合は、このバッチファイルは、単にチェックするため、日付/時刻値の右の行内の位置は1桁だけです。

使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。

  • del /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • move /?
  • set /? ...置換を理解するためにここで最も重要です。
  • setlocal /?

Using command redirection operatorsに関するMicrosoftの記事を参照してください。

+0

こんにちはmofi ..本当におかげさまでありがとう、それは期待どおりに動作します...正直言って私はdos-batchプログラミングではあまり良くありません。 – cyberjan

関連する問題