2013-02-09 26 views
14

Tôi đã cố gắng tạo tệp chuỗi kéo và thả. Tôi gặp sự cố khi tệp được đặt nhưng tệp bó không thể tìm thấy ...Tệp hàng loạt Sao chép bằng% 1 để kéo và thả

Tôi muốn sao chép .png tệp (như pict_2013020808172137243.png) vào một thư mục khác và đổi tên nó. Trong đường dẫn là các biểu tượng như _ và khoảng trắng, tôi cũng có t know how to make multi-drag-and-drop to make the same function (rename and add to .zip`). tôi đã cố gắng này, nhưng không có kết quả :(

@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 

Trả lời

32

Kéo thả & là xấu thực hiện cho các tập tin batch.
Các tên được trích dẫn, nếu một không gian có mặt, nhưng không nếu một nhân vật đặc biệt được tìm thấy, như &,;^

Đối với không gian chỉ trong tên tập tin của bạn, bạn cần thay đổi mã của bạn chỉ là một chút.

@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 mở rộng luôn đến một u nquoted phiên bản, vì vậy luôn luôn có thể báo cho họ một cách an toàn.

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

Để biết thêm thông tin chi tiết đọc Drag and drop batch file for multiple files?

+0

cảm ơn! Điều đó giúp tôi rất nhiều :) –

+0

* 'Kéo và thả được triển khai một cách tồi tệ cho các tập tin batch.' * - Tôi đã đọc nó trước và nhớ nó, vì vậy tôi có thể tìm thấy câu trả lời của bạn. Câu lệnh này có áp dụng cho '.bat' và' .cmd' trong cùng một cách không? Tôi có nghĩa là nếu nó là một [vấn đề thám hiểm] (http://stackoverflow.com/a/5192427/2932052), tại sao nó chỉ là một vấn đề cho các kịch bản hàng loạt? – Wolf

+0

Tôi đã kiểm tra xem nó hoạt động chính xác với các tập lệnh '.vbs' và' .exe' (và dĩ nhiên là không có '.cmd'). Thực sự khó hiểu, nhà thám hiểm có vẻ * đủ thông minh * nhưng đôi khi "không muốn". Liệu nó - theo ý kiến ​​của bạn - có ý nghĩa để hỏi tại sao? – Wolf