web-dev-qa-db-ja.com

ドラッグアンドドロップに%1を使用したバッチファイルコピー

ドラッグアンドドロップのバッチファイルを作成しようとしました。

ファイルが存在するが、バッチファイルで見つからないという問題があります...

.pngファイル(pict_2013020808172137243.pngなど)を別のフォルダーにコピーし、名前を変更したい。

パスには_のような記号とスペースがあり、マルチドラッグアンドドロップを使用して同じ関数を作成する方法もわかりません(名前を変更して.Zipに追加します)。

私はこれを試しましたが、結果はありません:(

@ECHO OFF
ECHO %1
COPY "%1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.Zip" "test" -r
20
John Johnson

バッチファイルのドラッグアンドドロップの実装が不適切です。
スペースが存在する場合、名前は引用されますが、&,;^などの特殊文字が見つかった場合は引用されません。

ファイル名のみのスペースの場合、コードを少し変更するだけです。

@ECHO OFF
ECHO "%~1"
COPY "%~1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.Zip" "test" -r

%~1は常に引用されていないバージョンに展開されるため、常に安全な方法で引用できます。

"c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets"
c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"

詳細については、「 複数ファイルのバッチファイルをドラッグアンドドロップしますか? 」を参照してください。

41
jeb