2016-04-24 19 views
1

下正常工作:不能把某個表達式在IF子句中的批處理文件

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

我可以添加一個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 

但是,當我把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

@ KenY-N哎呀,完成了! – Blrp

+3

似乎很可能是命令行中的'('/')'。你可能需要引用和/或逃避它們。 – Iridium

回答

1

感謝銥的解決方案。 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 
) 
相關問題