powershell - 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
. 我怎样才能解决这个问题?我以管理员身份运行脚本。
解决方案
如果我正确理解了这个问题,那么您有一个源文件夹"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"
}
当然,您需要有权在源文件夹及其子目录中创建新文件
推荐阅读
- tensorflow - 如何在 Tensorflow Lite 上为 CoreML 委托设置填充类型以修复未设置“PoolingLayerBuilder (MEAN)_1”。
- api - 如何从 api 文件夹中获取 NextJS 中的 API
- android - 华为邮箱在逗号后剪切链接
- sql - 从 JSON 中提取深度嵌套的值
- regex - Ansible 正则表达式搜索未知转义字符
- pandas - 获取 tensorflow 段中最大值的 id
- c++ - 一个类能否在内部监控其成员函数的使用和参数
- swift - 仅当设备运行 iOS 10+ 时有条件地导入库/Pod (Firebase)
- python - 为什么我非常简单的添加不起作用
- amazon-s3 - 如何为 milvus v2.0.0 启用 s3 支持而不是 minio?