我有一个包含三个部分的PowerShell脚本:1.修改文件名以删除MicrosoftOS保留字符;2.运行/usr/bin/flac将*.wav文件转换为*.flac;3.使用.dll将ID3标记从*.mp3文件复制到*.flac文件.
在我以前的Kubuntu v22.10系统上,这个脚本worked的所有三个部分.在MXLinuxv21上,此脚本在步骤2失败.对于/usr/bin/flac命令的objects,错误为"未找到文件"./usr/bin/flac加载,但表示找不到提供给它的文件.步骤1和3可以工作(我知道这一点,因为脚本使用一个参数跳过步骤2;因此,如果*.wav文件已经是*.flac文件,例如,在步骤2成功但步骤3由于某种原因失败的前一次运行中),我就可以运行它).
以下是PS代码片段:
[string] $flacEXE = '/usr/bin/flac'
if($convert -eq "yes" || $convert -eq "Yes" || $convert -eq "YES")
{
if (Test-Path -Path "$workingPath/*cr.wav")
{
$CRFiles = Get-ChildItem -Path "$workingPath/*cr.wav"
foreach ($crFile in $CRFiles)
{
$output = & $flacEXE "`"$crFile`""
if ($LASTEXITCODE -ne 0)
{
Write-Host "The flac conversion created an error..." -ForegroundColor Red
Write-Host "$output" -ForegroundColor Red
}
}
}
else
{
Write-Host "No ClickRepair files found but Convert was Yes ... Aborting script.`n" -ForegroundColor Red
throw $_.Exception.Message
exit
}
}
如果我在PowerShell(例如,在Visual Studio代码中)的提示符下运行/usr/bin/flac,它将失败.如果我从Linux终端对同一文件夹中的相同文件运行/usr/bin/flac,它会正常工作.
我认为这一定是某种权限问题(作用域问题?),但无法弄清楚.这些文件位于装载在/mnt/上的NTFS USB卷上.我最近迁移到了MXLinux,因此重新创建了我的系统.这是我第一次使用这个PowerShell脚本.
我应该指出,Set-ExecutionPolicy的一致性对于Linux上的PowerShell Core是无效的,只在Windows系统上有效,所以这是没有用的.