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"
}
当然你需要有在源文件夹及其子目录中创建新文件的权限
每当我尝试 运行 我的 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"
}
当然你需要有在源文件夹及其子目录中创建新文件的权限