我正在使用MSBuild
,FLAC
和LAME
管理我的MP3收藏,但遇到文件名中包含非ASCII字符的文件时会失败。
以下,删除项目文件显示问题:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" DefaultTargets="Default">
<PropertyGroup>
<FLAC>"C:\Program Files (x86)\Flac\bin\flac.exe"</FLAC>
</PropertyGroup>
<ItemGroup>
<Decode
Include="D:\Music\Artists\Kruder Dorfmeister\The K&D Sessions\**" />
</ItemGroup>
<Target Name="Default" Inputs="@(Decode)" Outputs="%(Identity).always">
<Exec Command="$(FLAC) --decode "@(Decode)"" />
</Target>
</Project>
当它到达"D:\Music\Artists\Kruder Dorfmeister\The K&D Sessions\Part One\02 - Jazz Master (K&D Session™).flac"
时,它会失败,并显示以下错误消息:
Default:
"C:\Program Files (x86)\Flac\bin\flac.exe" --decode "D:\Music\Artists\Kruder Dorfmeister\The K&D Sessions\Part One\02
- Jazz Master (K&D SessionT).flac"
02 - Jazz Master (K&D SessionT).flac: ERROR initializing decoder
init status = FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE
An error occurred opening the input file; it is likely that it does not exist
or is not readable.
正如您所看到的,有些事情正在改变“™”并将其转换为“ T ”。
但是什么?我该如何解决这个问题?答案 0 :(得分:0)
内置的MSBuild Exec
任务将给定的命令写入批处理文件,然后使用cmd /c /q
运行它。不幸的是,它使用 OEM代码页编写批处理文件。
这意味着Unicode文件名被破坏了。
您必须编写自己的Exec
(或Pipe
,甚至ConvertMusic
)任务。