2011-07-28 37 views
9

Ý tưởng là nhấp chuột phải vào bất kỳ tệp nào và sau đó chọn "sao lưu" trong trình đơn thả xuống mà chỉ sao chép tệp và thêm thời gian ngày vào cuối tên tệp, sau đó có thể di chuyển sao chép vào ổ đĩa khác.Chạy tập lệnh theo lô bằng cách nhấp chuột phải vào bất kỳ tệp nào

Tôi muốn một phương pháp chạy tập lệnh theo lô bằng cách nhấp chuột phải vào tệp và chuyển qua đó dưới dạng đối số (không cần nhập) hoặc bằng cách nào đó biết tệp đó là tệp nên được sử dụng trong tập lệnh .

Chủ yếu cho Windows XP, tôi cần nó có nguồn gốc như nhiều máy tính trang web tôi làm việc không thuộc về chúng tôi và tôi không muốn sao chép nhiều tệp hơn cần thiết hoặc dựa vào bất kỳ điều gì nhiều hơn lệnh chuẩn (hai phần ba số máy không có quyền hạn)

Tôi biết cách bạn có thể thay đổi tùy chọn tệp để mở cmd tại vị trí thư mục cụ thể (bên dưới) và tôi có thể thay đổi điều này để làm việc cho 1 tệp cụ thể loại, nhưng tôi không muốn thêm một khóa cho mỗi loại tập tin trên máy.

[HKEY_CLASSES_ROOT \ Folder \ shell \ 1.bat \ command] @ = "c: \ windows \ system32 \ cmd.exe \" % 1 \ ""

Từ một trang web khác một việc xung quanh mà gần giải quyết này cho tôi

jvierra - "Windows luôn có khả năng đó mà không thay đổi registry

Nơi một con dơi hoặc VBS tập tin trên máy tính của bạn Kéo và thả một file lên biểu tượng dơi Con dơi sẽ nhận được... tên tệp của tệp bị xóa dưới dạng% 1 và vbscript sẽ nhận nó dưới dạng WScript.Arguments (0).

Hãy dùng thử. Nó hoạt động khá tốt. Con dơi hoặc kịch bản có thể làm bất cứ điều gì với các tập tin từ thời điểm đó."

+0

bạn cũng có thể đặt lối tắt trong thư mục 'Gửi Tới', sau đó bạn có thể nhấp chuột phải vào tệp, chọn" Gửi tới "và chọn sao lưu. Điều đó sẽ không yêu cầu sửa đổi registry. – wimh

Trả lời

15

bạn có thể thêm dơi của mình vào 'Send To' menu. Xem http://support.microsoft.com/kb/310270

Tóm lại, chỉ cần sao chép tập tin .bat của bạn vào người sử dụng SendTo thư mục.

COPY MYBACKUP.BAT "%USERPROFILE%\SendTo" 

người dùng gọi dơi bạn chọn tùy chọn "Send To" mục trình đơn.

cho parametrization phức tạp hơn, như thay đổi nội dung hiển thị trong menu, hoặc biểu tượng .. Bạn có thể tạo một liên kết đến .BAT của bạn và đặt l mực trong thư mục SendTo thay vì .bat chính nó

COPY "My very special backup.lnk" "%USERPROFILE%\SendTo" 

Trước tiên bạn có thể chạy kiểm tra nhanh. Tạo một tệp BAT với nội dung này và sao chép nó qua thư mục Sendto.

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %~dpnx0 
echo Subject is %1 %~dpnx1 
pause 

Edit: sau một số các commments, tôi đã sửa chữa các thư mục đặc điểm kỹ thuật SendTo trong lệnh COPY, bằng cách thêm dấu ngoặc kép được yêu cầu; và tôi đã thêm ví dụ thử nghiệm và sửa lại cú pháp %~dpnx

+0

Tôi không thấy làm thế nào bạn sẽ vượt qua trong tên tập tin từ đó. – daniel

+0

tên tệp được thông qua bởi Explorer là tham số đầu tiên được gọi .bat. Bạn đã thử chưa? bạn có vấn đề gì –

+0

Đó là một điều khó khăn để giải thích, và khó để google cho cũng là lý do tại sao tôi yêu cầu. Tập lệnh lô cần biết tệp nào đã được nhấp vào. Tôi hiểu về việc có một .bat trong sendto cho phép bạn kích chuột phải và chạy nó. nhưng làm thế nào để các tập tin nhận được như là tham số đầu tiên sau đó. – daniel

1

@PA ví dụ (được sao chép ngay bên dưới để dễ xem) bị tắt bởi tóc.

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %dpnx0 
echo Subject is %1 %dpnx1 
pause 

Tôi không có đủ danh tiếng để trả lời @PA. Bạn đã quên bao gồm ~ trong biến.Điều này Q & A đã giúp tôi rất nhiều vì vậy tôi hy vọng điều này sẽ giúp người khác ra ngoài. Cảm ơn @daniel và @PA

Corrected daniel kiểm tra ví dụ dưới đây

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %~dpnx0 
echo Subject is %1 %~dpnx1 
pause 

Nếu bạn muốn chỉ vang tên của tập tin mà không có con đường sau đó bạn sẽ sử dụng% ~ n1

dụ:

echo Subject is %~n1 
Các vấn đề liên quan