在Windows上获取带有草莓perl的文件的最后修改日期

时间:2017-07-15 05:21:28

标签: windows perl batch-file command-line

我需要在文件中获取有关使用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变量

但是当我在qx(...)函数中运行相同的命令时,调用perl的外部,并且只是从命令行批处理作为命令它工作并返回正确的日期信息

我在perl脚本中做错了什么?

谢谢你的时间!

1 个答案:

答案 0 :(得分:3)

@fileInfo = qx(for %x in ($file) do echo %~tx);

也许?

用于此类目的的cmd命令是

for %x in (filename) do echo %~tx

(将文件名分配给元变量%x,然后echo该文件的[修改]日期)

如果在批处理中而不是在提示符中执行,则%需要%%

ECHO is on.echo语句的特征,没有参数。

我不确定two directories更高的想法是什么,但如果这是您的目标文件所在的位置,那么您需要使用{{1} nett前缀filename }}

也许

..\..\

其中无论是什么你提出的qx(echo %* whatever) 命令将产生cmd在所有转义字符解析后得到的结果(cmd表示"所有提供的参数&#34)