我有一个批处理文件(实际上是两个,一个简单,一个复杂),用于将IR命令发送到HTPC的blaster。我自己没有写批处理文件。太复杂了。这两个channel_changing批处理文件都有输入参数,一个只是{channel}(= 3个数字),另一个是更复杂的{channel}和{IRdefinition}(一个IR定义文件)。我无法直接从调用的应用程序(NextPVR)中调用start / priority,这就是为什么我需要使用两个批处理。
我需要做的是以高优先级运行channel_changing批处理。 我试过从一个简单的starter_batch调用channel_changing批处理,如下所示:
GXPC4312H_StarterUUTX.bat
REM
SET command=GXPC4312H_UUTX.bat
REM SET command=GXPC4312H_Changer.bat for the complex one
start "" /REALTIME /B %command%
REM
简单频道转换器批处理GXPC4312H_UUTX.bat
@echo off
cd C:\users\public\NPVR\ChanChg\
set "channel=%1"
set "num=-1"
:loop
set /a num=num+1
call set "name2=%%channel:~%num%,1%%"
if defined name2 (
uutx.exe -r3 -s10 -fGXPC4312H.ir %name2%
echo %name2%
goto :loop
)
复杂的频道转换器批GXPC4312H_Changer.bat
set sleep=0
set loops=5
:WAIT
IF EXIST C:\Users\Public\NPVR\ChanChg\usblock.dat (GOTO PING) ELSE (GOTO CC)
:PING
timeout 1
set /A sleep=%sleep%+1
IF %sleep% EQU %loops% GOTO ERROR
GOTO WAIT
:CC
ECHO wait_lock > C:\Users\Public\NPVR\ChanChg\usblock.dat
set input=%1
if not "%input:~0,1%" == "" C:\Users\Public\NPVR\ChanChg\uutx.exe -r3 -s200 -f%~dp0%2 %input:~0,1%
if not "%input:~1,1%" == "" C:\Users\Public\NPVR\ChanChg\uutx.exe -r3 -s200 -f%~dp0%2 %input:~1,1%
if not "%input:~2,1%" == "" C:\Users\Public\NPVR\ChanChg\uutx.exe -r3 -s200 -f%~dp0%2 %input:~2,1%
if not "%input:~3,1%" == "" C:\Users\Public\NPVR\ChanChg\uutx.exe -r3 -s200 -f%~dp0%2 %input:~3,1%
del C:\Users\Public\NPVR\ChanChg\usblock.dat
exit
:ERROR
ECHO %DATE% %TIME% >> C:\Users\Public\NPVR\ChanChg\changer_error.log
GOTO :CC
我用一个带有{channel}参数的提升命令提示符运行了第一个,例如115
我得到的是一个永无止境的批处理文件,并引发了很多错误。 似乎没有将通道号参数从入门批处理传递给更改的批处理,但是我看过它们已被传递?
Error: unable to find codeName '~0,1' in codeFile 'GXPC4312H.ir'
~0,1
Error: unable to find codeName '~1,1' in codeFile 'GXPC4312H.ir'
~1,1
Error: unable to find codeName '~2,1' in codeFile 'GXPC4312H.ir'
~2,1
etc etc
当我使用两个参数{channel} {IRDef.ir}运行第二个启动程序时,例如115 GXPC4312H.ir我有一个简单的错误
"The syntax of the command is incorrect"
我不太确定这是怎么回事,因为我已经继承了这些批处理文件(仅修改了路径名和IRdef文件)。尽管我可以一定程度地遵循其中的逻辑,但我仍在努力解决错误。
资源: