【问题标题】:Recursing the file system with Powershell使用 Powershell 递归文件系统
【发布时间】:2008-09-19 13:26:31
【问题描述】:

任何人碰巧有一个示例脚本,用于使用 Powershell 递归文件系统中的给定目录?最终我想要做的是创建一个脚本,它会在给定目录的情况下为我生成 NSIS 文件列表。与 here 使用 BASH 脚本所做的非常相似。

【问题讨论】:

  • 我的回答够吗?如果是,请将其标记为已接受。

标签: powershell nsis


【解决方案1】:

这是该 bash 脚本的“释义”端口。

$path = "c:\path\to\program"
$installFiles = "installfiles_list.txt"
$uninstFiles = "uninstfiles_list.txt"
$files = get-childitem -path $path -recurse | where-object { ! $_.psIsContainer } # won't include dirs
$filepath = $files | foreach-object { $_.FullName }
$filepath | set-content $installFiles -encoding ASCII
$filepath[($filepath.length-1)..0] | set-content $uninstFiles -encoding ASCII

【讨论】:

    【解决方案2】:

    正如halr9000 演示的那样,您可以使用Get-ChildItem cmdlet 的-recurse 开关参数来检索指定路径下的所有文件和目录。

    看起来您在问题中链接到的 bash 脚本也保存了目录,所以这是一个简单的函数,可以在单个结果对象中返回文件和目录:

    function Get-InstallFiles {
      param( [string]$path )
    
      $allItems = Get-ChildItem -path $path -recurse
      $directories = $allItems | ? { $_.PSIsContainer } | % { $_.FullName }
      $installFiles = $allItems | ? { -not $_.PSIsContainer } | % { $_.FullName }
      $uninstallFiles = $installFiles[-1..-$installFiles.Length]
    
      $result = New-Object PSObject
      $result | Add-Member NoteProperty Directories $directories
      $result | Add-Member NoteProperty InstallFiles $installFiles
      $result | Add-Member NoteProperty UninstallFiles $uninstallFiles
      return $result
    }
    

    您可以使用它从 halr9000 的示例中创建相同的安装/卸载文本文件,包括卸载目录:

    $files = Get-InstallFiles 'C:\some\directory'
    $files.InstallFiles | Set-Content 'installfiles.txt'
    $files.UninstallFiles + $files.Directories | Set-Content 'uninstallfiles.txt'
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 2012-09-04
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2014-03-03
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多