如何在目录PowerShell中检查是否具有相同名称但具有不同扩展名的文件



我试图在这里找到两件事。我的文件夹中有成千上万的文件。以一个文件为例,我们可以将相同的逻辑应用于所有文件

  1. 如果具有相同名称但存在不同扩展名的文件。
  2. 如果存在,我需要比较上写入时间或时间戳,以找出哪个文件更新。

例如,如果我有一个文件culture.txt,则应该有一个相应的文件culture.log

如果我有culture.txt,但是culture.log文件丢失,那么它是一个问题,因此我想输出所有.txt文件的名称,其中丢失了相应的.log文件。

如果culture.txtculture.log都可用,则我想检查culture.txt是否是在culture.log之后生成的。如果culture.txt是在culture.log之前生成的,则存在问题,因此,我需要输出此类.txt文件的名称,并带有此问题,上面写着" Culture.txt是在Culture.log.log-请重新运行程序"。

任何可以提供帮助的人都将不胜感激。谢谢。

如果我能得到更多的问题,需要更多的帮助。Esperento建议的代码完全正常工作,但要求更新。在一个文件夹中,我有多个具有多个扩展名的文件,而不限于.txt和.log。我可以在同一文件夹中使用.doc,.docx,.xls和许多其他文件。现在关于更新的要求。我必须寻找只有3个特定扩展名的文件名。其中之一是程序文件。显然应该首先生成。假设文化。然后,当我运行文化时,将分别像culture.log和culture.txt一样生成两个文件。因此,很明显,Prog上的时间戳比日志更古老,并且日志上的时间戳比TXT年龄更古老,TXT产生了最后的时间戳。我们必须检查仅对.txt文件的2个相应文件(日志和prog)的可用性,该文件是最后生成的。因此,第一个检查是,如果有2个相应的文件可用于.txt文件。接下来的检查是时间戳对应于这3个文件。我们只有在不满足条件之一的情况下只能输出,否则我们不输出任何内容时就可以了。例如,如果对于culture.txt,则缺少.log或.prog文件,我们必须输出一个或两个文件丢失的事实。如果TXT文件的时间戳比日志和/或PROG更古老,则必须输出该事实。我希望我的要求清楚。谢谢

尝试以下:

#list file and group by name without extension
Get-ChildItem "C:temptest" -file -filter "*.*" | group Basename | 
%{ 
    $group= $_.group   
    # if not same name, missing message
    if ($_.Count -eq 1)
    {
       "'{0}' are missing" -f $group.Name 
    }
    #else search into current group file with great creation time and print message
    else
    {
       $group | % {$file=$_; $group | %{if ($_.CreationTime -gt  $file.CreationTime) {"'{0}' has beeen generated before '{1} " -f $file.Name, $_.Name} } }
    }
} | out-file "C:temptestresult.txt"

相关内容

  • 没有找到相关文章

最新更新