【发布时间】:2021-08-08 10:06:53
【问题描述】:
我要从一开始就说我没有任何编程经验。 音频论坛中的某个人为我编写了这个批处理文件,以便使用名为 FinalCD 的命令行程序对 WAV 文件进行下采样。工作完美,但我注意到它无法处理文件名为 unicode、西里尔文、亚洲符号等的文件。 有人告诉我我可以解决这个问题,但是将文件名放在双引号中,因为我无法弄清楚代码中的确切位置。
echo off
cls
for %%a in ("input\*.wav") do finalcd /f0 /d1 "%%a" "output\%%~nxa"
pauseecho off
写它的人也说过不包括安全检查,我只是想知道安全检查是否意味着在处理过程中查找错误或在处理文件之前检查潜在的隐藏恶意软件。
【问题讨论】:
-
什么是
finalcd?它是文件扩展名为.exe或.com的可执行文件,还是文件扩展名为.bat或.cmd或.vbs的脚本文件,...?finalcd是否完全支持 Unicode 文件名?如果第三行for %%I in ("input\*.wav") do finalcd.exe /f0 /d1 "%%I" "output\%%~nxI" 2>nul || finalcd.exe /f0 /d1 "%%~sfI" "output\%%~snxI"以不等于 0 的退出值退出并使用短 8.3 文件名作为输入和输出文件,请尝试第二次运行finalcd。第一行应该是@echo off。 -
处理批处理文件的 Windows 命令处理器
cmd.exe不是为处理 Unicode 文件名而设计的。对于cmd.exe的这种限制,使用chcp 65001完成的UTF-8 字符编码当然不是真正有效的解决方法。如果finalcd本身完全支持 Unicode 文件名,最好使用专为处理 Unicode 文件名而设计的 PowerShell 在.wav文件列表上运行finalcd。 -
finalcd 是一个可执行文件,.exe。但我使用批处理文件来运行它,并批量压缩多个文件。还有一个前端,但它非常微薄,只允许处理单个文件。如果它真的有能力本身是一个很好的问题。开发人员说这是旧的可视化 C++,并且自己输入支持需要做很多工作。我将如何在 powershell 中运行它?
-
从阅读本文我猜如果软件不支持它,我将无法最终更改它?我是一个软件菜鸟,所以我认为可以通过更改批处理文件来实现
-
好吧,如果
finalcd.exe本身不支持Unicode 文件名,可以使用PowerShell 在循环中处理所有.wav文件,首先将要处理的当前文件重命名为temp.wav,以temp.wav作为输入文件名和output\temp.wav作为输出文件名运行finalcd.exe,PowerShell 将输入文件重命名为原始文件名,并将输出文件名重命名为原始文件名。
标签: windows batch-file cmd character-encoding