【发布时间】:2017-12-20 06:04:58
【问题描述】:
我需要使用 perl 脚本获取文件上次修改时间的信息 相关代码如下:
#where $file equals "MyFile.txt"
$backslash = "\\";
$upTwoLayersHelper = "..$backslash..$backslash";
@fileInfo = qx(forfiles /M $file /P $upTwoLayersHelper /C "cmd /c echo @fdate @ftime");
qx 是 perl 中的一个函数,允许执行系统命令并将输出重定向到变量
我已经研究过使用stat 并且一直返回
Dec 31 of like 1960
所以this 对我不起作用:/
我使用变量 $backslash 和 $upTwoLayersHelper 来构建“安全”路径,因为 Windows 喜欢使用 \ 而不是 /,并且我测试以确保变量在 qx(...here.. .) 函数调用。
我的问题是我得到的唯一输出是
ECHO is on.
当我打印 @fileInfo 变量时
BUT 当我在 perl 的 qx(...) 函数调用 outside 中运行相同的命令时,并且只是从命令行批量作为命令它有效并返回正确的日期信息
我在 perl 脚本中做错了什么?
感谢您的宝贵时间!
【问题讨论】:
-
您是否尝试使用file test 修改时间_ --
$mod_days = -M $file?此外,模块Win32API::File::Time 应该会有所帮助。 -
您确实提到了
stat,但以防万一:您是否将(stat $file)[9]用于mtime? (ctime在 Windows 上无法正常工作。) -
澄清一下——
-M使用了stat调用,但你所说的尝试它很奇怪。stat时间相关字段以秒为单位自纪元,开始 1970年。你如何得到一个日期“像1960年”那?-M以天为单位返回时间,检查起来更加清晰。
标签: windows perl batch-file command-line