2017-07-15 83 views
-1

草莓perl的,我需要獲得使用Perl腳本 繼承人的相關代碼修改時,它是最後一個文件中的信息:獲取文件的最後修改日期與Windows

#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建立「安全」的路徑,因爲窗戶喜歡使用\而不是/我測試,以確保該變量內插值qx(...這裏...)函數調用。

我的問題是我得到的唯一輸出是

​​

當我打印的@fileInfo變量

當我QX(...)函數調用內運行相同的命令perl的外部,只是從命令行批量命令它工作並返回正確的日期信息

我在做我的Perl腳本錯誤?

謝謝你的時間!

+0

您是否試過用[file test](http://perldoc.perl.org/functions/-X.html)進行修改time_ - '$ mod_days = -M $ file'?此外,模塊[Win32API :: File :: Time](http://search.cpan.org/~wyant/Win32API-File-Time-0.006/lib/Win32API/File/Time.pm)應該有所幫助。 – zdim

+0

你提到'stat',但是爲了以防萬一:你是否使用'(stat $ file)[9]'作爲'mtime'? (在Windows上''ctime'不會像預期的那樣工作。) – zdim

+0

澄清 - '-M'使用'stat'調用,但是你說什麼嘗試它很奇怪。 'stat'時間相關的字段以_since_ epoch秒爲單位,從_starts_ 1970開始。你如何得到一個像「_like 1960_」這樣的日期? '-M'以幾天的時間返回時間,更加清晰。 – zdim

回答

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

也許?

用於這樣的目的的cmd命令是

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

(文件名分配給metavariable %x,然後echo該文件的[修改]日期)

其中如果內執行的%需要是%%一批而不是來自提示。

ECHO is on.echo聲明不帶參數的特徵。

我不知道該two directories更高的想法是什麼,但如果這是你的目標文件所在,你需要實價前綴filename..\..\

也許

qx(echo %* whatever) 

哪裏無論是你的建議cmd命令將產生什麼cmd收到全部轉義字符分辨率(%*意味着「所有提供的參數」)

相關問題