2016-12-23 4 views
0

バッチファイルに関する質問がありました。 私は、ディレクトリの "右クリック"で実行されるバッチスクリプトを持っています。Windowsバッチファイル - 複数選択

しかし、複数のディレクトリを選択した場合、スクリプトは1つずつ選択ごとに実行されます。 スクリプトをすべての選択肢に対して1回実行する方法でこれを統合することは可能でしょうか? バッチスクリプトのすべての選択肢のリストが表示されますか? (おそらく、レジストリの変更?)

おかげ サアドは

答えて

0

はい、それは可能です。スクリプトのショートカットをshell:sendto folderに貼り付けます。次に:

  • 単一項目または複数選択を「右クリック」します。
  • 「送信先」サブメニューに移動します。
  • スクリプトのショートカットをクリックします。

残念ながら、記述された方法はディレクトリ(フォルダ)だけでなく、ファイル名も受け入れます。スクリプトに提供された名前の妥当性に関するいくつかのテストを追加する必要があります。以下

は、試験のために使用するスクリプトである(これは個々にfile/folder/unknownを区別する):

@echo OFF 
SETLOCAL enableextensions disabledelayedexpansion 
echo(
echo before any shift 
echo "%~nx0" [%~1] [%~2] [%~3] [%~4] 
echo all %%* = %* 
echo(
set /A "ii=0" 
:loopfor 
    if "%~1"=="" goto :loopend 
    set /A "ii+=1" 
    If exist "%~1\*" (
     echo folder %%%ii% = %1 
) else (
     If exist "%~1" (
      echo file %%%ii% = %1 
    ) else (
      echo unknown %%%ii% = %1 
    ) 
) 
    SHIFT 
    goto :loopfor 
:loopend 
    SHIFT 
echo(
echo after all shifts: %ii% parameter^(s^) 
echo "%~0" [%~1] [%~2] [%~3] [%~4] 
echo all %%* = %* 
ENDLOCAL 
pause>NUL 
goto :eof