バッチでの現在日時文字列取得後のファイル書き込みに



 ◇-?バッチでの現在日時文字列取得後のファイル書き込みに-ほとほと-04/16-11:59(300)-No.475225
   ┗?!Re:バッチでの現在日時文字列取...-pandora-04/16-16:23(295)-No.475241
     ┗?!!Re:バッチでの現在日時文字列取...-pandora-04/16-16:41(295)-No.475242
       ┗?!!!Re:バッチでの現在日時文字列...-ほとほと-04/16-17:44(294)-No.475244
         ┗?!!!!Re:バッチでの現在日時文字列...-pandora-04/16-18:29(293)-No.475248
           ┗?!!!!【ありがとう】Re:バッチでの...-ほとほと-04/16-19:19(292)-No.475251

▲このページのトップに戻る
475225バッチでの現在日時文字列取得後のファイル書き込みにほとほと 2009/04/16-11:59

メーカー名:富士通
OS名:WindowsXp Professional
パソコン名:FMV-S8360
トラブル現象:ソフトの使い方がわからない
ソフト関連: バッチファイル
--
現在バッチプログラムを組んでいるのですが、
実行プログラムを結果をERRORLEVELで判断し、メッセージを
ログファイルに書き込もうとしております。

その際に日付を、yyyy/mm/dd hh:mm:ss 形式で出力したいのですが
どのようにしたらよいでしょうか?

また、for でパラメータ(%%Tで値)を変えながら処理するのに当たって、
秒のレベルまで正しくに結果を出力させたいのですが、可能でしょうか?

以下は、苦戦中のバッチファイルです。
ご教授よろしくお願いします。

========== << ここから >> ==========

@REM 日付時刻取得
FOR /F "delims=\" %%i IN ('date /t') DO SET DATE12=%%i
FOR /F "delims=\" %%i IN ('time /t') DO SET TIME12=%%i

@REM CSVファイルをD5形式に変換する
for %%T in (1,2,3,4,5,6) do (
test.exe %%T >>logfile.txt
if ERRORLEVEL 1 (
echo %DATE12% %TIME12% エラーです。>>logfile.txt
goto END
) else (
echo %DATE12% %TIME12% 正常終了>>logfile.txt
)
)

:END
@REM 終了


▲このページのトップに戻る
475241Re:バッチでの現在日時文字列取得後のファイル書き込みにpandora 2009/04/16-16:23

記事番号475225へのコメント
ほとほとさんは No.475225「バッチでの現在日時文字列取得後のファイル書き込みに」で書きました。

こんな感じではいかが?


::---ここから---

@echo off

CALL :GETDATETIME
ECHO yyyy/mm/dd hh:mm:ss = %DATETIME%

pause
GOTO :EOF
EXIT

rem -------------------------
rem 日時の取得subroutine
rem outoput: DATETIME
rem -------------------------
:GETDATETIME
SET TEMPDATE=%DATE:/=%
SET TEMPTIME=%TIME: =0%
SET YYYY=%TEMPDATE:~0,4%
SET MM=%TEMPDATE:~4,2%
SET DD=%TEMPDATE:~6,2%
SET HH=%TEMPTIME:~0,2%
SET MI=%TEMPTIME:~3,2%
SET SE=%TEMPTIME:~6,2%
SET DATETIME=%YYYY%/%MM%/%DD% %HH%:%MI%:%SE%
SET TEMPTIME=
SET TEMPDATE=
GOTO :EOF

::---ここまで---

▲このページのトップに戻る
475242Re:バッチでの現在日時文字列取得後のファイル書き込みにpandora 2009/04/16-16:41

記事番号475241へのコメント
日時データをバラさなくて良いなら、もっと簡単な方法


::---ここから---

@echo off
:loop

ECHO yyyy/mm/dd hh:mm:ss = %DATE% %TIME:~0,8%

ping -n 5 localhost >nul
goto :loop
pause

::---ここまで---

ちなみに、ping は、SLEEPのつもり

▲このページのトップに戻る
475244Re:バッチでの現在日時文字列取得後のファイル書き込みにほとほと 2009/04/16-17:44

記事番号475242へのコメント
pandoraさま

ありがとうございます。

確かに、2番目の記載などは簡単で助かります。(^^/

が、for を使用して .exe のパラメータ値を変えながら
となるととたんにおかしくなるようです。汗。

何か良い知恵がありますでしょうか?
※実行結果の判断ロジックは1つにしたいのですが。。

わがままを申してすいません。

▲このページのトップに戻る
475248Re:バッチでの現在日時文字列取得後のファイル書き込みにpandora 2009/04/16-18:29

記事番号475244へのコメント
ほとほとさんは No.475244「Re:バッチでの現在日時文字列取得後のファイル書き込みに」で書きました。

なるほどね
じゃぁ、遅延環境変数形式で取得しましょ

こんな感じで

::---ここから---

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

for %%T in (1,2,3,4,5,6) do (
test.exe %%T >>logfile.txt
if ERRORLEVEL 1 (
echo !DATE! !TIME:~0,8! エラーです。>>logfile.txt
) else (
echo !DATE! !TIME:~0,8! 正常終了>>logfile.txt
)

rem SLEEP
ping -n 5 localhost >nul
)

pause

::---ここまで---


なお、問題がある場合は、
具体的に、どこが、どうおかしいか 書いてくれるとアドバイスもやりやすい

▲このページのトップに戻る
475251Re:バッチでの現在日時文字列取得後のファイル書き込みにほとほと 2009/04/16-19:19

記事番号475248へのコメント
pandoraさま

たしかにうまくいきました。ありがとうございました!
遅延環境変数形式。。。

まだまだ勉強不足でした。
大変に助かりました。ありがとうございました!



A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言