查找文件/文件夹的修改日期

时间:2013-11-04 18:02:06

标签: powershell batch-file modified-date

我是PowerShell的新手,我希望能得到一些帮助,创建一个告诉我文件修改日期的脚本。

我希望我对PowerShell有更多了解,因为我觉得我要求很多(本周所有的空闲时间都将用于更好地学习PowerShell)。指出我在哪里学习如何做到这一点也会非常有帮助。

这是完整的纲要。我需要每天运行一个报告,检查90个不同商店的计算机列表,以确保他们执行了某个备份。修改日期应告知备份是否已执行,并将设置为上一个日期。

如果修改日期是昨天,则不需要输出。如果它不是昨天,我想在PowerShell窗口或文本文件中输出,无论哪个更容易。

我还必须检查90个商店中每个商店的文件夹不超过7天,输出标准相同。对于每个商店,我的想法都是这样的

对于商店1:

Check file date for \\server\store\computer\c:\folder\"newest modified date in folder"
if date equals yesterday
   then do nothing
if date does not equal yesterday
   then output "Test did not backup"

check folder modified date for \\server\sample\store\backupfolder
if date equals <7 days old
   then do nothign
if date equals >7 days old
   then output "test did not backup"

很抱歉没有证明我的研究工作,我对Powershell很新,我在截止日期前完成了这项工作。从昨天开始,我就学会了如何完成我需要用这个脚本做的所有事情。感谢@Keith让我走上了正确的道路。我最终使用以下代码来实现我的目标,即仅仅输出结果为false的位置。

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}))
{
}
Else
{
    'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}


$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}))
{
}
Else
{
    'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}

5 个答案:

答案 0 :(得分:49)

如果运行Get-Item或Get-ChildItem命令,它们将输出包含此信息的System.IO.FileInfoSystem.IO.DirectoryInfo个对象,例如:

Get-Item c:\folder | Format-List  

或者您可以直接访问酒店:

Get-Item c:\folder | Foreach {$_.LastWriteTime}

开始过滤文件夹&amp;基于上次写入时间的文件,您可以这样做:

Get-ChildItem c:\folder | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}

答案 1 :(得分:10)

要在单个文件上获取修改日期,请尝试:

$lastModifiedDate = (Get-Item "C:\foo.tmp").LastWriteTime

与另一个人比较:

$dateA= $lastModifiedDate 
$dateB= (Get-Item "C:\other.tmp").LastWriteTime

if ($dateA -ge $dateB) {
  Write-Host("C:\foo.tmp was modified at the same time or after C:\other.tmp")
} else {
  Write-Host("C:\foo.tmp was modified before C:\other.tmp")
}

答案 2 :(得分:0)

这对我有用:

=IF(MATCH("ZZZ",A:A)>=ROW(),IF(A1<>"","To Be","Not to be"),"")

答案 3 :(得分:0)

您可以尝试dirTimesJS.batfileTimesJS.bat

示例:

event_tg_example=# CREATE OR REPLACE FUNCTION add_tg_fn()
        RETURNS event_trigger LANGUAGE plpgsql AS $f$
DECLARE
    obj record;
BEGIN
  FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands()
  LOOP
  execute format('create function %I() returns trigger as $tgf$ begin raise info %L, $i$here$i$; return old; end $tgf$ language $l$plpgsql$l$', 'blah_'||obj.objid::regclass,'%');
  execute format ('CREATE TRIGGER tg_blah BEFORE DELETE ON %I FOR EACH ROW EXECUTE PROCEDURE %I();', obj.objid::regclass, 'blah_'||obj.objid::regclass);

  END LOOP;
END
$f$
;
CREATE FUNCTION
event_tg_example=# CREATE EVENT TRIGGER add_tg_tg
   ON ddl_command_end
WHEN TAG IN ('CREATE TABLE')
   EXECUTE PROCEDURE add_tg_fn()
;
CREATE EVENT TRIGGER
event_tg_example=# create table t(i int);
CREATE TABLE
event_tg_example=# insert into t values (1);
INSERT 0 1
event_tg_example=# delete from t where i = 1;
INFO:  here
DELETE 1
event_tg_example=#

答案 4 :(得分:-1)

  

PowerShell代码,用于查找过去2天内修改过的所有文档库文件。

$web = Get-SPWeb -Identity http://siteName:9090/ 
        $list = $web.GetList("http://siteName:9090/Style Library/")
        $folderquery =  New-Object Microsoft.SharePoint.SPQuery  
        $foldercamlQuery =  
        '<Where>   <Eq> 
                <FieldRef Name="ContentType" />  <Value Type="text">Folder</Value> 
            </Eq> </Where>' 
        $folderquery.Query = $foldercamlQuery 
        $folders = $list.GetItems($folderquery) 
        foreach($folderItem in $folders) 
        { 
            $folder = $folderItem.Folder
            if($folder.ItemCount -gt 0){ 
            Write-Host " find Item count " $folder.ItemCount
                $oldest = $null
                $files = $folder.Files

                $date = (Get-Date).AddDays(-2).ToString(“MM/dd/yyyy”)
                foreach ($file in $files){ 
                    if($file.Item["Modified"]-Ge $date)
                    {
                        Write-Host "Last 2 days modified folder name:"   $folder   " File Name: "  $file.Item["Name"]   " Date of midified: "  $file.Item["Modified"] 
                    } 
                } 
            } 
            else
             { 
                Write-Warning "$folder['Name'] is empty" 
            } 
        }