2015-02-24 74 views
0

我試圖編寫一個批處理腳本在XP機器上使用。 我基本上想獲取特定文件的文件修改信息並將其輸出到文件。批處理腳本獲取文件修改信息

這是我到目前爲止寫:

SET filename="C:\Users\xxx\Desktop\testfile.txt" 
if exist %filename% (
    for %%A in (%filename%) DO (SET "bodytext=%bodytext%testfile.txt updated at %%~tA") 
) 
    else (
    SET "bodytext=%bodytext%Warning no file exists." 
) 
echo %bodytext% > results.txt 

當我運行它,它寫入更新後的文件名NAND時間細RESULTS.TXT,但它也寫道:「警告:不存在文件。」也results.txt?

如果有人能幫助我,我將不勝感激?

感謝

回答

1
) 
    else (

這必須全部在一行

)其他(

+0

感謝您的回覆,不能相信這是簡單的! – colin 2015-02-25 14:16:55

-1

如果設置 '的' 命令變量裏面你必須用 'SETLOCAL enabledelayedexpansion'。

@echo off 
setlocal enabledelayedexpansion 

SET filename="C:\filename.txt" 
if exist %filename% (
    for %%a in (%filename%) do (
     set filedate=%%~ta 
     set bodytext=%filename% last updated at !filedate! 
    ) 
) else (
    set bodytext=%filename% No File Exist. 
) 

echo %bodytext%>c:\results.txt 
+0

延遲擴張與OP的問題無關。您添加的'filedate'變量確實需要延遲擴展,但這是一個完全不必要的併發症。 – dbenham 2015-02-24 14:37:42

+0

你試過這個腳本嗎?它工作 – 2015-02-24 14:50:12

+0

是的,它的工作原理,你完全混淆了OP的實際問題,並增加了它不需要的複雜性。這個原理和OP的原因並不是因爲你已經結合了上面的else('''')行。正如Magoo在他的回答中所描述的那樣,只對OP的代碼做出改變(沒有延遲擴展),並且工作得很好。 – dbenham 2015-02-24 15:16:00