1

私のバッチ ファイルは、ファイル (.mkv) を渡されたときに call コマンドの実装に失敗しますが、パラメーターなしで直接実行すると機能します。引数を指定して vlc を実行するなど、作業後のコマンド。

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

start "VLC media player.lnk" %1

それが重要な場合は、Windows 7で実行します。

更新: call 関数は primary2.bat で動作したくないようですが、primary2.bat が行うことの 1 つを実行するはるかに単純なバッチ ファイルで動作します。

比較用 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 に答える