เครื่องหมายเปอร์เซ็นต์ (% และ %%) ในอาร์กิวเมนต์ไฟล์แบตช์หมายความว่าอย่างไร


11

ฉันคิดว่าฉันขาดอะไรบางอย่างไปเพราะฉันดูเหมือนจะไม่สามารถค้นหาความหมายได้

ตัวอย่าง:

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

บรรทัดนั้นควรใช้รุ่นบรรทัดคำสั่งของ7zipการบีบอัดแต่ละโฟลเดอร์ แต่ฉันนิ่งงันกับสิ่งที่มีความ%%Aหมายในบริบทนี้



1
มีบรรทัดคำสั่งและไฟล์บาทสับสน เปลี่ยนเครื่องหมายด้านบน
Jim Kieger

คำตอบ:


12

forคำสั่งต้องการยึดเพื่อให้คุณสามารถผ่านพร้อมตัวแปรเพื่อใช้ในภายหลังในแบบสอบถามที่เราจะบอกว่ามันใช้ตัวยึด%Aเหตุผลรหัสที่คุณเห็นการใช้งาน%%Aเป็นเพราะภายในแฟ้มชุด (ซึ่งผมถือว่าเป็นที่ที่คุณพบนี้) %มีความหมายพิเศษดังนั้นคุณต้องทำมันสองครั้ง%%เพื่อให้มันกลายเป็นหนึ่งเดียว%ที่จะส่งผ่านไปยังforคำสั่ง

หากต้องการแยกสิ่งที่คำสั่งทำจริงมีสองส่วนต่อคำสั่ง:

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

สิ่งที่ส่วนนี้บอกไว้สำหรับทุกโฟลเดอร์ในโฟลเดอร์ปัจจุบันดำเนินการคำสั่งต่อไปนี้แทนที่%%Aด้วยชื่อของโฟลเดอร์การประมวลผลในปัจจุบัน

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

ส่วนนี้บอกว่าจะรันคำสั่ง"\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"และแทนที่ทั้งสอง%%Aด้วยบันทึกปัจจุบันที่เรากำลังประมวลผล


เพียงเพื่อ nitpick - / D ที่ห่วงสำหรับจะ จำกัด * ตัวแทนไปยังไดเรกทอรีไม่ "ทุกไฟล์ในโฟลเดอร์นี้และทุกโฟลเดอร์ย่อย" (สมมติว่าส่วนขยายคำสั่งเปิดใช้งาน)
ernie

@ernie คุณถูกต้องฉันมองไปที่สวิตช์ / R บนหน้าช่วยเหลือฉันได้แก้ไขคำตอบแล้ว
Scott Chamberlain

ขอบคุณที่มันแสดงให้เห็นว่า noobish นี้ดูเหมือน แต่สิ่งโบราณที่ฉันต้องขุดผ่านคู่มือออนไลน์สองสามสำหรับ
Jim Kieger

0

มันเป็นตัวแปร

ตัวอย่างเฉพาะนั้นใช้ตัวเลือกไดเรกทอรีของการวนรอบ FOR วนซ้ำผ่านไดเรกทอรีและกำหนดให้กับ %% A

นั่นไม่ใช่ตัวอย่างบรรทัดคำสั่ง แต่เป็นตัวอย่างไฟล์แบตช์ ในแบตช์ไฟล์คุณต้องใช้ %% A ขณะที่อยู่ในบรรทัดคำสั่งคุณจะใช้% A


0

ในสถานการณ์ของคุณ %% A เป็นตัวยึดตำแหน่งสำหรับการวนซ้ำ "สำหรับ" ที่วนซ้ำ (ซึ่ง / D ระบุไดเรกทอรี) ดังนั้นการวนซ้ำของลูปแต่ละครั้ง %% A จึงเป็นหนึ่งในไดเรกทอรี

คุณจะเห็น %% แทนที่จะเป็น% ในรหัสชุดงาน คุณจะเห็น% แทนที่จะใช้ %% ในพรอมต์คำสั่งของคุณ

ดังนั้นรู้ว่าถ้าคุณคัดลอกรหัสแบตช์ไฟล์ลงในพรอมต์คำสั่งแล้วรันด้วยการใช้ %% มันจะผิดพลาดและในทางกลับกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.