批处理脚本获取文件修改信息

批处理脚本获取文件修改信息

问题描述:

我试图编写一个批处理脚本在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?

如果有人能帮助我,我将不胜感激?

感谢

) 
    else (

这必须全部在一行

)其他(

+0

感谢您的回复,不能相信这是简单的! – colin 2015-02-25 14:16:55

如果设置 '的' 命令变量里面你必须用 '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