1

同じバッチ ファイルの特定の量を同時に起動しようとしていますが、パラメーターを渡すのに問題があります。

私が使用するコマンドは次のとおりです。 START "Split lossless enc %%G" "%wrkdir%_menc.bat" "%wrkdir%%avs%_%%G.avs" "%wrkdir%%outf%_%%G.avi" "%menc%" "%mencx%"

%%G は数字です (私のテストでは 1 から 4 まで)
%wrkdir% は現在の作業ディレクトリです (つまり、基本的に %~dp0)
%avs% と %outf% は両方とも拡張子
のないファイル名です %menc% はファイル名を含むフルパスです拡張子
%mencx% は拡張子付きのファイル名です

これらのいずれにもスペースが含まれている可能性がありますが、私が行ったテストでは含まれていないため、パラメーターの周囲の引用符を削除すると、今のところ完全に機能します。

私が行ったすべての検索の後、パラメーターを引用するだけでうまくいくはずですが、次のエラーが発生し続けます。The filename, directory name, or volume label syntax is incorrect.

起動したbatファイルのパラメーターを使用しないようにして、そこで使用した方法が問題の原因ではないことを確認しました(非常に疑っていましたが)が、含まれているだけでも機能しませんECHO it works

編集: START が 1 から 4 までの FOR ループにあり、setlocal enableDelayedExpansion を使用することを忘れていましたが、使用する変数はすべてその前に設定されています (明らかに FOR に属する %%G を除く)。そしてループの外にある

Edit2:簡単にするために、バッチファイルを最小限に抑えました(同じエラーが発生することを確認するためにテストしました)ので、すべてを提供できます:

@ECHO off

SET wrkdir=%~dp0
SET avs=encode-01
SET menc=D:\_1enc_\_Tools\Mencoder\mencoder_r32198.exe
SET outf=test_mt
SET inst=4

SET mencx=%menc%
:FindMencx
IF NOT "%mencx:*\=%"=="%mencx%" (
  SET "mencx=%mencx:*\=%"
  GOTO FindMencx
)

FOR /L %%G IN (1,1,%inst%) DO (
 START "Split lossless enc %%G" "%wrkdir%_menc.bat" "%wrkdir%%avs%_%%G.avs" "%wrkdir%%outf%_%%G.avi" "%menc%" "%mencx%"
)
4

2 に答える 2

1

forループを含むバッチ ファイル全体が表示されていないと推測できますが、空白のタイトルを追加してみてくださいstart。これがないと、パラメータにスペースが含まれている場合に問題が発生する可能性があります。

START "" "スプリット ロスレス enc %%G" "%wrkdir% menc.bat" "%wrkdir%%avs% %%G.avs" "%wrkdir%%outf%_%%G.avi" "%menc% " "%mencx%"

于 2012-10-05T18:49:05.430 に答える
0

多くの試行錯誤の末、起動するbatファイルも引用符で囲まれ、独自のパスが含まれている場合、STARTコマンドは引用符で囲まれたパラメーターでは機能しないようです。

この問題を回避するには、次のように/ Dオプション(これまで存在していたことに気づかなかった)を使用して起動ディレクトリを設定する必要がありました。

START "Split lossless enc %%G" /D"%wrkdir%" "_menc.bat" "%wrkdir%%avs%_%%G.avs" "%wrkdir%%outf%_%%G.avi" "%menc%" "%mencx%"

また、間違ったパスを入力したときに同じエラーが表示されたため、何らかの理由で正しく表示されないように見えることもわかりました。ただし、パラメーターを含まない引用符で囲まれたパスとbatファイル、または引用符で囲まれていないファイルで正常に機能する理由はわかりません。

編集:完全なバッチファイルに修正を含めた後、起動されたバッチファイルが現在のバッチファイルと同じディレクトリにある場合は引用符で囲むことができないことに気付きましたが、別のディレクトリにある場合は問題ありません。変。したがって、同じディレクトリから起動するには、の_menc.bat代わりにを使用する必要があり"_menc.bat"ます。

少なくとも、引用されていない場合はどちらの場合も機能するので、それで十分です。

于 2012-10-06T02:45:40.230 に答える