我在使用Handbrake运行Windows批处理文件时遇到问题,如果源文件包含特殊字符,那么我会收到一条错误消息,指出它找不到源文件,因为由于某种原因,Windows在运行时会将特殊字符转换为不可读的文本批处理文件。例如:
HandbrakeCLI.exe -i % äöü日本語のキーボード é.avi -o % äöü日本語のキーボード é.mp4 --scan
如果我复制上面的内容并将其直接放入CMD中,那么它将起作用。但是,如果我将其放在批处理文件中,则它将失败。关于如何使批处理文件成功打开的任何想法?
答案 0 :(得分:0)
这对我有用,使用您问题描述中的名称...
我已经准备好我的cmd,键入 chcp 850
,因此,我不确定这是否是工作过程的一部分。
首先,将原始名称保存在变量中,然后使用HandBreak
处理_temp.avi
命令。等待完成,然后将原始文件重命名为.avi
和新的.mp4
。
将变量替换为 HandBreak
,以完全符合您的 HandBreak place
在以下位置的路径:
set HandBrake=C:\Program Files\HandBrake\HandBrakeCLI.exe
@echo off & setlocal EnableDelayedExpansion
rem if needed, uncomment the following line removing "rem "
rem chcp 850
set HandBrake=C:\Program Files\HandBrake\HandBrakeCLI.exe
for /f %%a in ('dir /b /a-d *.avi ^|find /c /v ""') do set count=%%a
for %%i in (*.avi) do if /I not "%%~nxi"=="_temp.avi" (
ren "%%~fi" "_temp.avi"
"%HandBrake%" -i "%%~dpi_temp.avi" -o "%%~dpi_temp.mp4" --scan
"%HandBrake%" -i "%%~dpi_temp.avi" -o "%%~dpi_temp.mp4"
if exist "%%~dpi_temp.avi" (ren "%%~dpi_temp.avi" "%%~ni.avi")
if exist "%%~dpi_temp.mp4" (ren "%%~dpi_temp.mp4" "%%~ni.mp4")
set /a "count=!count! - 1" & echo/&echo/Remain AVI Files: !count!
>nul timeout /t 3
)
欢迎来到堆栈溢出。祝你好运!