当前位置: 首页 > 知识库问答 >
问题:

获取csv文件夹列表中每个子文件夹的LastAccessTime

卞俊贤
2023-03-14

我有一个csv($HomeDir)文件,如下所示:

Users,Comments,HomeDir
user1,account1,c:\folder1
user2,account2,c:\folder2
user3,account3,c:\folder3

我得到成功的LastAccessTime每个子文件夹在'HomeDir'列与此代码:


    $csv = Import-Csv $HomeDir
    foreach ($folder in $csv.HomeDir)  {
                                        Get-ChildItem $folder -ErrorAction SilentlyContinue |
                                            ? {$_.PSIsContainer -eq "True"} | 
                                             Select-Object FullName,  @{Name='LastAccessTime'; Expression={$_.LastAccessTime.ToString('yyyyMMdd')}} |
                                             Sort-Object -Descending -Property LastAccessTime |
                                             Export-Csv $newcsv -NoTypeInformation -Append
                                              }

$newcsv的结果是:

"FullName","LastAccessTime"
"c:\folder1\Sub1","20201223"      
"c:\folder1\Sub1a","20201223"      
"c:\folder1\Sub1b","20201223"      
"c:\folder2\Sub2","20201218"
"c:\folder2\Sub2a","20201218"
"c:\folder3\Sub3","20201212"
"c:\folder3\Sub3a","20201215"
"c:\folder3\Sub3b","20181215"
"c:\folder3\Sub3c","20201011"

问题是:有没有办法根据相应的“用户”列分配相关用户?这样的输出对我来说也足够了

"Users","FullName","LastAccessTime"
"user1","c:\felder1\Sub1","20201223"
"user1","c:\folder1\Sub1a","20201223"
"user1","c:\folder1\Sub1b","20201223"
"user2","c:\folder2\Sub2","20201218"
"user2","c:\folder2\Sub2a","20201218"
"user3","c:\folder3\Sub3","20201212"
"user3","c:\folder3\Sub3a","20201215"
"user3","c:\folder3\Sub3b","20181215"
"user3","c:\folder3\Sub3c","20201011"

提前谢谢

共有2个答案

左丘烨烁
2023-03-14

我提出我的看法。

$HomeDir="c:\temp\input.csv"
$newcsv="c:\temp\output.csv"

Import-Csv $HomeDir | %{

#save user name
$User=$_.Users

Get-ChildItem $_.HomeDir -ErrorAction SilentlyContinue -Directory | 
            Sort LastAccessTime -Descending |
                select @{N='Users'; E={$User}}, FullName,  @{N='LastAccessTime'; E={$_.LastAccessTime.ToString('yyyyMMdd')}}

} |  Export-Csv $newcsv -NoType
齐才艺
2023-03-14

不要在循环之前将HomeDir属性拉出来,只需在循环中引用它,并将用户属性添加到您的Fullname和LastAccessTime属性中。

$properties = @{Name='User'; Expression={$user}},
              'FullName',
              @{Name='LastAccessTime'; Expression={$_.LastAccessTime.ToString('yyyyMMdd')}}

Import-Csv $HomeDir | ForEach-Object {
    $user = $_.users
    Get-ChildItem $_.HomeDir -ErrorAction SilentlyContinue | 
        Where-Object {$_.PSIsContainer -eq "True"} | 
            Select-Object $properties |
                Sort-Object -Descending -Property LastAccessTime
} | Export-Csv $newcsv -NoTypeInformation

为了便于阅读,我事先将属性放在变量中。此外,如果您使用PowerShell版本3或更高版本,您可以使用-Directory参数代替$_。PSIsContainer-eq$true.最后,如果您使用Foreach-Object而不是Foreach循环,您可以通过管道导出,而不必使用-Append多次打开和关闭文件。

$properties = @{Name='User'; Expression={$user}},
              'FullName',
              @{Name='LastAccessTime'; Expression={$_.LastAccessTime.ToString('yyyyMMdd')}}

Import-Csv $HomeDir | ForEach-Object {
    $user = $_.users
    Get-ChildItem $_.HomeDir -Directory -ErrorAction SilentlyContinue |  
        Select-Object $properties | Sort-Object -Descending -Property LastAccessTime
} | Export-Csv $newcsv -NoTypeInformation
 类似资料:
  • 问题 你想获取文件系统中某个目录下的所有文件列表。 解决方案 使用 os.listdir() 函数来获取某个目录中的文件列表: import os names = os.listdir('somedir') 结果会返回目录中所有文件列表,包括所有文件,子目录,符号链接等等。 如果你需要通过某种方式过滤数据,可以考虑结合 os.path 库中的一些函数来使用列表推导。比如: import os.pa

  • 问题内容: 我在文档文件夹中获取文件名的代码有什么问题? 我以为我已正确阅读了文档,并且我对documents文件夹中的内容非常确定,但是“ fileList”没有显示任何内容?“目录”显示文件夹的路径。 问题答案: 此解决方案适用于 Swift 4 (Xcode 9.2)和 Swift 5 (Xcode 10.2.1+): 这是一个可重用的FileManager扩展,它还允许您跳过或在结果中包含

  • 我正在寻找一种方法来获取zip文件中的文件列表。我创建了一个方法来获取目录中的文件列表,但我也在寻找一种方法来获取zip文件中的文件,而不是只显示zip文件。 以下是我的方法:

  • 如何使用BigQueryJavaAPI获取云存储子目录中的对象列表? 我可以在文件夹中获取对象列表,但不能在第二级文件夹中获取。所以如果我有/Folder1/Folder2/File1.csv/Folder1/File2.csv 我可以得到Folder2 但是如何获取Folder2中的对象列表呢?

  • 问题内容: 我如何返回一个包含该文件夹中的所有文件以及子文件夹的文件数组,我的方法仅适用于该文件夹,并且不包括子文件夹。 问题答案: 使用您当前的代码,进行以下调整:

  • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。