PowerShell 脚本中的 Get-ChildItem 权限被拒绝错误

Permission Denied error with Get-ChildItem in PowerShell script

每当我尝试 运行 我的 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
}

在folder1里面,有folder2,里面有我要获取的文件。我不在 folder2 中 运行ning,因为将来 folder1 中会有一个 folder3,我想从这两个文件夹中获取文件。我收到错误:

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

我认为错误出在 Get-ChildItem。我怎样才能解决这个问题?我正在 运行 以管理员身份运行脚本。

在您的情况下,$files = Get-ChildItem 将获取 F:\****\folder1 中的所有项目,这也是无法由 ffmpeg 处理的文件夹 folder2。您可以添加 -File 开关以排除文件夹:

$files = Get-ChildItem -File

如果我正确理解问题,您有一个源文件夹 "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"
}

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