我試圖運行批處理腳本,該腳本將查找特定文件的最後修改日期。我使用類似於下面的腳本的內容:批處理腳本獲取遠程文件的最後修改日期
@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=
,但那不起作用。
如果很重要:我已將批處理腳本連接到每日運行的SQL Server 2000作業。批處理文件和日誌文件駐留在數據庫所在的服務器上,但批處理腳本完全限定文件位置,如我在示例中所示(這是因爲如果我想從我的桌面運行批處理文件,它將檢查/更新正確的文件)。
由於提前, 約瑟夫
編輯:
輸出應該是這樣的:
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
而且其他時間我米ay得到:
Hello,
tmp.txt file updated as of 9/19/2012 2:24 PM
tmp2.txt file updated as of
弄清楚發生了什麼問題很混亂。
感謝您的解釋!在閱讀你的解釋和變量的延遲擴展信息之後,這更有意義。並感謝關於簡化代碼的說明。我對我的製作腳本做了非常類似的更改,並且效果很好。再次感謝! –