1

エクスプローラー(Windows XPの場合)でいくつかのファイルを選択し、右クリックして[送信]を選択できるように、小さなスクリプトを作成しました。スクリプトは最大20個のファイルに対して正常に機能しますが、21個以上のファイルが選択されている場合は失敗します。なぜ&どうすればこれを修正できますか?

:Loop
If "%~dpn1"=="" Goto :EOF
convert "%~dpn1.jpg" "%~dpn1_dvr_hires.tif"
convert "%~dpn1.jpg" -scale 150 -density 72 "%~dpn1_dvr_hires_renamed.jpg"
Shift 
Goto Loop

ドラッグアンドドロップまたはsendtoメニューを使用すると:<20ファイル、コマンドは期待どおりに実行されますが、> 20で、「Windowsは指定されたデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。アイテムにアクセスします。」権限を確認して変更しましたが、権限に問題はないようです。

4

1 に答える 1

3

[送る] は、ドラッグ アンド ドロップと同じメカニズムを使用します。各ファイル名へのフル パスを引数として組み込んだコマンド ラインが作成されます。行の最大長は 8191 バイトです。たった 21 個のファイルでその制限に達している可能性はあると思いますが、その可能性は非常に低いです。

より可能性の高いシナリオは、&および/または^文字を含むファイル名に遭遇する可能性があることです。&またはを含むファイル名を正しく引用できない「ドラッグアンドドロップ」/「送信先」のバグがあります^。スペースを含む名前が適切に引用されるため、イライラします。

詳細と考えられる解決策については、 「Droplet」バッチ スクリプト - アンパサンドを含むファイル名を参照してください。

于 2012-10-23T17:42:41.917 に答える