1

我的批处理文件在传递文件(.mkv)时无法实现调用命令,但在没有参数的情况下直接运行时可以工作。下班后的命令包括运行带参数的 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

两者都单独工作

4

2 回答 2

1

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

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

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

于 2012-12-10T12:33:45.477 回答
0

想通了我的问题。外部批处理文件中有对本地文件的引用,将它们全部更改为完整地址,现在它可以完美运行。

将所有地址的 HDMI.txt 更改为“C:\Users****\Desktop\System Tools\Monitors\HDMI.txt”等等。

由于某种原因,从 cmd 调用的批处理文件不能使用相对地址

于 2012-12-10T20:44:37.773 回答