首页 > 解决方案 > PowerShell 脚本中的 Get-ChildItem 权限被拒绝错误

问题描述

每当我尝试运行我的 PowerShell 脚本时,都会出现错误。请注意,我没有太多的编程知识。

这是代码(替换了一些文件夹名称)

cd -Path "F:\****\folder1"
$files = Get-ChildItem
foreach ($file in $files) {
  $newName = $file.BaseName + ".mp3"
  ffmpeg -i $file.FullName -codec:a libmp3lame -b:a 320k $newName
}

在文件夹 1 中,有文件夹 2,里面有我想要获取的文件。我没有在文件夹 2 中运行,因为将来文件夹 1 内会有一个文件夹 3,我想从两者中获取文件。我收到错误消息:

F:\****\folder1\folder2: Permission denied

我相信错误在于Get-ChildItem. 我怎样才能解决这个问题?我以管理员身份运行脚本。

标签: powershellffmpegpermission-deniedget-childitem

解决方案


如果我正确理解了这个问题,那么您有一个源文件夹"F:\****\folder1,其中文件保存在需要处理的子文件夹中。

为此,您需要在 Get-ChildItem cmdlet 上添加-File开关-Recurse

像这样的东西:

$sourceFolder = "F:\Somewhere\folder1"
$files = Get-ChildItem -Path $sourceFolder -File -Recurse
foreach ($file in $files) {
    $newName = [System.IO.Path]::ChangeExtension($file.FullName, ".mp3")
    # since the output file should go into the same directory, you can do
    # $newName = [System.IO.Path]::ChangeExtension($file.Name, ".mp3")
    ffmpeg -i "$($file.FullName)" -codec:a libmp3lame -b:a 320k "$newName"
}

当然,您需要有权在源文件夹及其子目录中创建新文件


推荐阅读