无法在批处理文件的IF子句中放置某个表达式

时间:2016-04-24 23:13:29

标签: batch-file if-statement

以下工作正常:

@echo off
youtube-dl --output D:\path\%%(title)s.%%(ext)s -f bestaudio https://www.youtube.com/watch?v=J9bjJEjK2dQ

我可以添加IF条款(我得到预期的' hi'):

@echo off
IF 1==1 (
    echo hi
)
youtube-dl --output D:\path\%%(title)s.%%(ext)s -f bestaudio https://www.youtube.com/watch?v=J9bjJEjK2dQ

但是当我在youtube-dl条款中加入IF时,它并不起作用。我得到s.%(ext)s was unexpected at this time.,没有hi

@echo off
IF 1==1 (
    echo hi
    youtube-dl --output D:\path\%%(title)s.%%(ext)s -f bestaudio https://www.youtube.com/watch?v=J9bjJEjK2dQ
)

如果我将输出路径放在变量中,也是一样:

@echo off
set OUTPUT=D:\path\%%(title)s.%%(ext)s
IF 1==1 (
    echo hi
    youtube-dl --output %OUTPUT% -f bestaudio https://www.youtube.com/watch?v=J9bjJEjK2dQ
)

变量本身不是问题,因为以下工作正常:

@echo off
set OUTPUT=D:\path\%%(title)s.%%(ext)s
IF 1==1 (
    echo hi
)
youtube-dl --output %OUTPUT% -f bestaudio https://www.youtube.com/watch?v=J9bjJEjK2dQ

如何将事物放在IF子句中?

1 个答案:

答案 0 :(得分:1)

感谢Iridium的解决方案。 IF()内的括号需要转义,因此(变为^()变为^)

@echo off
IF 1==1 (
    echo hi
    youtube-dl --output D:\path\%%^(title^)s.%%^(ext^)s -f bestaudio https://www.youtube.com/watch?v=J9bjJEjK2dQ
)