使用Windows批处理文件时的特殊字符?

时间:2019-01-29 10:50:51

标签: batch-file cmd special-characters handbrake

我在使用Handbrake运行Windows批处理文件时遇到问题,如果源文件包含特殊字符,那么我会收到一条错误消息,指出它找不到源文件,因为由于某种原因,Windows在运行时会将特殊字符转换为不可读的文本批处理文件。例如:

HandbrakeCLI.exe -i % äöü日本語のキーボード é.avi -o % äöü日本語のキーボード é.mp4 --scan

如果我复制上面的内容并将其直接放入CMD中,那么它将起作用。但是,如果我将其放在批处理文件中,则它将失败。关于如何使批处理文件成功打开的任何想法?

1 个答案:

答案 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

)

欢迎来到堆栈溢出。祝你好运!