Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
特殊字符导致Windows批处理文件关闭_Windows_File_Batch File_Handbrake - Fatal编程技术网

特殊字符导致Windows批处理文件关闭

特殊字符导致Windows批处理文件关闭,windows,file,batch-file,handbrake,Windows,File,Batch File,Handbrake,因此,我创建了一个windows批处理脚本,以使用HandbrakeCLI转换视频 批处理脚本: @echo off ::SET TO CURRENT CODE PAGE::::::::::::::::::::::::::: FOR /F "tokens=4 delims= " %%G in ('chcp') DO ( chcp %%G >nul ) ::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal Enable

因此,我创建了一个windows批处理脚本,以使用HandbrakeCLI转换视频

批处理脚本:

@echo off
::SET TO CURRENT CODE PAGE:::::::::::::::::::::::::::
FOR /F "tokens=4 delims= " %%G in ('chcp') DO (
chcp %%G >nul
) 
:::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal EnableExtensions
title AniCoder v2.5 by Nightsanity
color 0a
cd "%~d0%~p0"

::PREVENT MULTIPLE HANDBRAKE PROCESSES::::::::::::::::
set ignore=INFO:
for /f "usebackq" %%A in (`tasklist /nh /fi "imagename eq HandBrakeCLI.exe"`) do if not %%A==%ignore% (
exit
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::

::PREREQUISITES CHECK:::::::::::::::::::::::::::::::::
if not exist "HandBrakeCLI.exe" (
echo HandBrakeCLI is missing!
pause 
exit
)
if exist "Jobs.txt" del "Jobs.txt"
if not exist "ToConvert" mkdir "ToConvert"
if not exist "Converted" mkdir "Converted"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::

::CREATE A LIST OF VIDEOS TO CONVERT:::::::::::::::::::
for /F %%i in ('dir /s /b "ToConvert\*.*"') do (
dir/s/b "ToConvert\*" >> "Jobs.txt"
goto MAIN
)
goto NOFILES
:::::::::::::::::::::::::::::::::::::::::::::::::::::::

::LOOP THROUGH JOBS LIST AND CONVERT FILES:::::::::::::
:MAIN
for /f "tokens=* delims= " %%a in (Jobs.txt) do (
HandBrakeCLI -i "./ToConvert/%%~nxa" -f mp4 -o "./Converted/%%~na.mp4" -q 22 -e x264 -x cabac=0:ref=2:me=hex:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0 -E faac --mixdown mono -B 64 -X 480 -l 272 -s 1 --subtitle-burn -a 1
)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::

::CLEAN UP FILES:::::::::::::::::::::::::::::::::::::::
if exist "Jobs.txt" del "Jobs.txt"
:Question
cls
echo Encode Done!
echo.
set DELFILES=
set /p DELFILES="Do you want to delete original files (Y/N)?:"
if "%DELFILES%" == "y" goto DELNOW
if "%DELFILES%" == "Y" goto DELNOW
if "%DELFILES%" == "n" goto ENDNOW
if "%DELFILES%" == "N" goto ENDNOW
goto Question
:DELNOW
if exist "ToConvert\*.*" del /Q "ToConvert\*.*"
:ENDNOW
endlocal
exit
:::::::::::::::::::::::::::::::::::::::::::::::::::::::

::WHEN NO FILES ARE INSIDE TOCONVERT FOLDER::::::::::::
:NOFILES
echo No video files found in:
echo ToConvert folder
echo.
pause
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
HandbrakeCLI参考:

我遇到了一个问题,如果路径中有一个特殊字符,例如一个德语Umlaut,它将不会解释它或其他东西,因为它不会转换并关闭窗口

我如何解决这个问题

运行Windows 7 Home Premium Sp1

我建议您更改

for /F %%i in ('dir /s /b "ToConvert\*.*"') do (
 dir/s/b "ToConvert\*" >> "Jobs.txt"

将短名称输出到
jobs.tst

或许

 echo(%%~dspi%%~nxi >> "Jobs.txt"
可能更好


(无法测试-我没有可用的测试目录)

请使用该地区的代码页。您也在使用前向斜杠,它通常在Windows中工作,但在不同的情况下会失败。我必须从运行bat的系统中设置为当前代码页,还是必须手动添加它?您的chcp例程什么都不做-它将代码页设置为已设置的代码页。尝试使用
chcp NUM
,其中NUM是该区域的代码页编号。像
chcp 1252
一样,看看它是否有帮助。
 echo(%%~dspi%%~nxi >> "Jobs.txt"