Dấu phần trăm (% và %%) trong đối số tệp bó có nghĩa là gì?


11

Tôi nghĩ rằng tôi đang thiếu một cái gì đó bởi vì tôi dường như không thể tìm thấy điều này có nghĩa là gì.

Thí dụ:

for /D %%A in (*) do "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

Dòng đó được cho là sử dụng phiên bản dòng lệnh 7zipđể nén các thư mục riêng lẻ, nhưng tôi không hiểu %%Aý nghĩa của bối cảnh này là gì .



1
Có dòng lệnh và tập tin tắm nhầm lẫn. Thay đổi các dấu hiệu trên đầu trang.
Jim Kieger

Câu trả lời:


12

Các forlệnh cần một giữ chỗ để bạn có thể vượt qua cùng các biến để sử dụng sau trong truy vấn, chúng tôi đang nói với nó sử dụng giữ chỗ %A, lý do mã bạn nhìn thấy công dụng %%Alà bởi vì bên trong một tập tin thực thi (mà tôi giả định là nơi bạn tìm thấy này) các %có một ý nghĩa đặc biệt, vì vậy bạn phải thực hiện hai lần %%để nó được chuyển sang một lần duy nhất %để được truyền vào forlệnh

Để thực sự phá vỡ những gì lệnh đang làm, có hai phần của lệnh:

 for /D %%A in (*) do .....

Những gì phần này nói là cho mọi thư mục trong thư mục hiện tại thực hiện lệnh sau thay thế %%Abằng tên của thư mục hiện đang xử lý.

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

Những gì phần này nói là thực thi lệnh "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"và thay thế hai %%Abản ghi bằng bản ghi hiện tại mà chúng ta đang xử lý.


Chỉ với nitpick - / D trên vòng lặp for sẽ giới hạn * ký tự đại diện cho các thư mục, không phải "mọi tệp trong thư mục này và mọi thư mục con" (giả sử Tiện ích mở rộng lệnh được bật).
ernie

@ernie bạn đúng rồi, tôi đang xem công tắc / R trên trang trợ giúp, tôi đã sửa câu trả lời của mình.
Scott Chamberlain

Cảm ơn bạn vì điều đó, nó cho thấy điều này có vẻ như thế nào, nhưng đó là thứ khá cổ xưa mà tôi phải tìm hiểu qua một vài hướng dẫn trực tuyến.
Jim Kieger

0

Đó là một biến.

Ví dụ cụ thể đó sử dụng tùy chọn thư mục của vòng lặp FOR , lặp qua các thư mục và gán chúng cho %% A.

Đó cũng không phải là một ví dụ dòng lệnh, mà là một ví dụ về tệp bó. Trong các tệp bó, bạn cần sử dụng %% A, trong khi trên dòng lệnh, bạn chỉ cần sử dụng% A.


0

Trong kịch bản của bạn, %% A là một trình giữ chỗ cho vòng lặp "for" đang lặp lại (mà / D chỉ ra các thư mục). Vì vậy, mỗi lần lặp của vòng lặp, %% A là một trong các thư mục.

Bạn sẽ thấy %% thay vì% trong mã hàng loạt. Bạn sẽ thấy% thay vì %% được sử dụng trong dấu nhắc lệnh của bạn.

Vì vậy, hãy biết rằng nếu bạn sao chép mã tập tin hàng loạt vào dấu nhắc lệnh và chạy nó với %% đang được sử dụng, nó sẽ báo lỗi và ngược lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.