为什么我的Batch在传递文件时无法调用?

时间:2012-12-10 03:08:34

标签: batch-file

我的批处理文件在传递文件(.mkv)时无法实现call命令,但在没有参数的情况下直接运行时可以正常工作。下班后的命令包括运行带参数的vlc。

call "C:\Users\****\Desktop\System Tools\Monitors\Primary2.bat"

start "VLC media player.lnk" %1
如果重要的话,

在Windows 7上运行。

更新:似乎调用函数不想使用primary2.bat,但是可以使用更简单的批处理文件来执行primary2.bat做的事情之一

进行比较 primary2.bat

@ECHO off

IF Exist Single.txt (
    IF EXIST Primary1.txt (
        echo Primary Screen Set to Two >> Primary2.txt
        del /q Primary1.txt 
        echo Triple Monitors enabled >> Triple.txt
        del /q Single.txt
        If Exist HDMI.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleHDMI\TripleHDMI Primary2.lnk"
        )
        IF Exist VGA.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleVGA\TripleVGA Primary2.lnk"
        )   
    )
)

IF Exist Dual.txt (
    IF EXIST Primary1.txt (
        echo Primary Screen Set to Two >> Primary2.txt
        del /q Primary1.txt
        echo Triple Monitors enabled >> Triple.txt
        del /q Dual.txt
        If Exist HDMI.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleHDMI\TripleHDMI Primary2.lnk"
        )
        IF Exist VGA.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleVGA\TripleVGA Primary2.lnk"
        )

    )
    IF EXIST Primary3.txt (
        echo Primary Screen Set to Two >> Primary2.txt
        del /q Primary3.txt
        echo Triple Monitors enabled >> Triple.txt
        del /q Dual.txt
        If Exist HDMI.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleHDMI\TripleHDMI Primary2.lnk"
        )
        IF Exist VGA.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleVGA\TripleVGA Primary2.lnk"
        )
    )
)


IF Exist Triple.txt (
    IF EXIST Primary1.txt (
        echo Primary Screen Set to Two >> Primary2.txt
        del /q Primary1.txt
        If Exist HDMI.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleHDMI\TripleHDMI Primary2.lnk"
        )
        IF Exist VGA.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleVGA\TripleVGA Primary2.lnk"
        )
    )
    IF EXIST Primary3.txt (
        echo Primary Screen Set to Two >> Primary2.txt
        del /q Primary3.txt
        If Exist HDMI.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleHDMI\TripleHDMI Primary2.lnk"
        )
        IF Exist VGA.txt (
            "C:\Users\****\Desktop\System Tools\Monitors\TripleVGA\TripleVGA Primary2.lnk"
        )
    )
)

hello.bat用它来测试,这个工作

echo hello
"C:\Users\****\Desktop\System Tools\Monitors\TripleHDMI\TripleHDMI Primary2.lnk"
        )
pause

都是单独工作

2 个答案:

答案 0 :(得分:1)

如果您要做的只是将mkv文件作为参数传递给您正在调用的批处理文件,则语法为

call "C:\Users\****\Desktop\System Tools\Monitors\Primary2.bat" mkvfile.mkv

然后在调用批处理文件中,可以使用mkv访问%1文件。

答案 1 :(得分:0)

弄清楚我的问题。在外部批处理文件中引用了本地文件,将它们全部更改为完整地址,现在它可以完美地工作。

将HDMI.txt更改为“C:\ Users **** \ Desktop \ System Tools \ Monitors \ HDMI.txt”,依此类推所有地址。

由于某些原因,从cmd调用的批处理文件无法使用相对地址