特定のファイルの最終変更日を見つけるバッチスクリプトを実行しようとしています。次のスクリプトに似たものを使用しています。
@echo off
set mainDir=\\subdomain.myintranet.net\c$
set txtFile=%mainDir%\tmp.txt
set txtFile2=%mainDir%\tmp2.txt
set "bodyText=^<p^>Hello,^<br /^>^<br /^>"
if exist %txtFile% (
for %%X in (%txtFile%) do (set fileDate=%%~tX)
set "bodyText=%bodyText%tmp.txt file updated as of %fileDate%^<br /^>"
) else (
set "bodyText=%bodyText%Warning: Issues finding %txtFile%.^<br /^>"
)
if exist %txtFile2% (
for %%X in (%txtFile2%) do (set fileDate2=%%~tX)
set "bodyText=%bodyText%tmp2.txt file updated as of %fileDate2%^<br /^>"
) else (
set "bodyText=%bodyText%Warning: Issues finding %txtFile2%.^<br /^>"
)
set "bodyText=%bodyText%^</p^>"
echo %bodyText% > %mainDir%\mylog.txt
このサンプルコードをテストしてみると、うまくいくこともあれば、うまくいかないこともあります。何が起こるかというと、ファイルは見つかりましたが、fileDate
変数は空白に戻っています。
スクリプトの先頭に空の変数を入れてみfileDate=
ましたが、うまくいきませんでした。
重要な場合:毎日実行されるSQLServer2000ジョブにバッチスクリプトを接続しています。バッチファイルとログファイルはデータベースと同じサーバー上にありますが、バッチスクリプトは、例で示したようにファイルの場所を完全に修飾します(これは、デスクトップからバッチファイルを実行する場合、チェックするためです。 /正しいファイルを更新します)。
よろしくお願いします、ジョセフ
編集:
出力は次のようになります。
Hello,
tmp.txt file updated as of 9/19/2012 2:24 PM
tmp2.txt file updated as of 9/19/2012 10:02 AM
私が時々得るのは:
Hello,
tmp.txt file updated as of
tmp2.txt file updated as of
そして他の時に私は得るかもしれません:
Hello,
tmp.txt file updated as of 9/19/2012 2:24 PM
tmp2.txt file updated as of
何が悪いのかを理解するのは混乱します。