は、ドラッグで失敗する可能性があり%1
、シフトまたは%*
への対処エクスプローラは非常にスマートではないので、コマンドラインを作成するとき、ドロップします。
ファイルあなたは
pcutmp3.bat Cool&stuff.cue
のようなコマンドラインパラメータがそう%1
にのみCool
でも%*
であるだけCool
ですが、pcutmp3.batが終了した後、cmd.exeを得るようCool&stuff.cue
は、エクスプローラで引用されていないようにstuff.cue
を実行しようとします。あなたがこれを使用することができますこのようなものを処理するには
、それはcmdcmdline
変数を使用して、すべてのファイル名をキャッチ。
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem *** Take the cmd-line, remove all until the first parameter
rem *** Copy cmdcmdline without any modifications, as cmdcmdline has some strange behaviour
set "params=!cmdcmdline!"
set "params=!params:~0,-1!"
set "params=!params:*" =!"
set count=0
rem Split the parameters on spaces but respect the quotes
for %%G IN (!params!) do (
set /a count+=1
set "item_!count!=%%~G"
rem echo !count! %%~G
)
rem list the parameters
for /L %%n in (1,1,!count!) DO (
echo %%n #!item_%%n!#
)
pause
REM ** The exit is important, so the cmd.exe doesn't try to execute commands after ampersands
exit
Btw。 「標準」バッチ行の制限が8191文字であるにもかかわらず、ドラッグ操作の行制限が〜2048文字である&です。
出典
2011-03-04 10:18:42
jeb
こんにちは、マイク、あなたの助けに感謝!私はその上に.cueファイルをドロップするだけでバッチを実行していました。あなたが言ったことを試した後、私は単に '/dir_path/test.cue 'を"今度は予期せぬ "ものにしています。再度、感謝します! – ar4s
私の悪い! Explorerがファイル名を引用するのを忘れてしまった。基本的には、 "if" somefile \ blahbah "" == "" 'となっていました。余分な引用符をすべて好きではありませんでした。引用符を適切に削除するようにスクリプトを更新しました。 。!あなたはまた、チェックを刻むことにより、(正式には、この答えを受け入れることができます:。また、この変更で、バッチファイルは、もはやDOS互換性があります:( –
OK、はい、これは間違いなく、私はこれで非常にあなたの助けに感謝乾杯ar4fs @ – ar4s