กำลังหาวิธีการแก้ปัญหาในการพิมพ์ pathes ภายในpath
ตัวแปรในหน้าต่าง Command-Line ฉันมาถึงนี้การแก้ปัญหา คำตอบคือคำสั่งนี้:
echo %path:;=&echo.%
ตอนนี้ฉันสงสัยว่ามันทำงานอย่างไร
กำลังหาวิธีการแก้ปัญหาในการพิมพ์ pathes ภายในpath
ตัวแปรในหน้าต่าง Command-Line ฉันมาถึงนี้การแก้ปัญหา คำตอบคือคำสั่งนี้:
echo %path:;=&echo.%
ตอนนี้ฉันสงสัยว่ามันทำงานอย่างไร
คำตอบ:
นั่นเป็นทางออกที่น่าสนใจที่ฉันไม่เคยเห็นมาก่อน ให้ฉันพยายามอธิบาย:
echo %path%
หากต้องการพิมพ์เส้นทางทั้งหมดใช้ นี้จะพิมพ์ไดเรกทอรีทั้งหมดในบรรทัดเดียวคั่นด้วยเครื่องหมายอัฒภาค ( ;
)%path:a=b%
ซึ่งจะแทนที่a
อักขระทั้งหมดด้วยb
echo.
ถูกใช้เพื่อพิมพ์บรรทัดใหม่&
ใช้เพื่อแยกคำสั่งเช่นecho line1&echo line2
จะพิมพ์สองบรรทัด;
ด้วยไม่มีอะไรเลยแล้วพิมพ์บรรทัดใหม่' ฉันไม่พบเอกสารใด ๆ เกี่ยวกับเรื่องนี้ดังนั้นมันเป็นเพียงการตีความของฉัน ตรงไปตรงมาฉันไม่ได้รู้ว่าเป็นไปได้ แต่มีคุณไป UPDATEตีความของฉันของขั้นตอนนี้ดูเหมือนว่าจะออกไปและจะมีการอธิบายที่ดีขึ้นโดยwizzwizz4echo path
? %% ใช้สำหรับตัวแปรอย่างไร
set greeting=Hello
เกิดความecho %greeting%
สับสนPATH
เกิดขึ้นกับทั้งคำสั่งและตัวแปรดังนั้นการพิมพ์คำสั่งpath
หรือecho %path%
จะให้ผลลัพธ์เดียวกัน
$PATH
เป็นต้น
echo.
ไม่ใช่ "คำสั่งเพื่อพิมพ์บรรทัดใหม่" นี่คือแปลคำสั่งของ Microsoftสำหรับ Windows NT, cmd
; และecho.
เป็นเพียงคำสั่งที่จะพิมพ์เป็นองค์ประกอบเส้นทางการสร้างความมั่นใจว่าถ้าองค์ประกอบเส้นทางจะว่างก็ไม่ได้สลับไปที่อื่น ๆecho
การทำงานของ ครั้งแรกที่echo
ควรจะเป็นจริงecho.
เกินไป
นี่คือการใช้การทดแทนตัวแปรบรรทัดคำสั่ง %path:;=&echo.%
หมายถึง " %path%
แต่แทนที่ทั้งหมด;
ด้วย&echo.
" ซึ่งหมายความว่าด้วยset path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
กลายเป็น:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
เนื่องจาก&
เป็นตัวคั่นคำสั่งจึงเท่ากับ:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
เนื่องจาก quirks ของ DOS Batch echo.
เหมือนกันecho
ยกเว้นเมื่อไม่มีอะไรเกิดขึ้นหลังจากนั้น หากเป็นเช่นนั้นมันจะไม่พิมพ์อะไรเลยแทนที่จะบอกคุณว่าECHO
เปิดหรือปิดอยู่ สิ่งนี้จะทำให้ผลลัพธ์:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
จริง ๆ ควรecho.%path:;=&echo.%
พิจารณากรณีที่%PATH%
เริ่มต้นด้วย a ;
แต่คำสั่งนี้ค่อนข้างฉลาดอยู่แล้ว
การเดินทางเข้า detalias ละเอียดจริงๆ ควรจะนำมาใช้แทนecho(
echo.
นี่เป็นเพราะecho.
อาจมีปัญหาเมื่อคุณมีไฟล์ชื่อecho
และช้าเพราะมันต้องตรวจสอบดิสก์ ( %CD%
และฉันคิดว่าทั้งหมด%PATH%
) ทุกครั้งที่มันทำงาน (ฉันไม่มีสำเนา Windows ดังนั้นฉันจึงไม่สามารถตรวจสอบด้วยตนเองได้มันเป็นเพียง%CD%
หรือที่ใดก็ตาม%PATH%
ที่การปรากฏตัวของecho
ไฟล์จะส่งผลกระทบecho.
และสิ่งนี้จะทำอย่างไร)
echo)
แต่ฉันจำไม่ได้จริงๆ ;-(
echo.
เป็นสิ่งที่ผู้คนเคยหมุนเวียนกันมากที่สุดเมื่อหลายปีก่อน มันเป็นหนึ่งในหนังสือหลายเล่ม ประสิทธิภาพไม่ใช่ปัญหา พฤติกรรมแปลกประหลาดเมื่อมีไฟล์ต่าง ๆ เกิดขึ้นคือ เมื่อฉันเขียนการแทนที่ 32 บิตสำหรับ 16 บิตcmd
ใน OS / 2 การแตกชื่อคำสั่งที่อักขระเครื่องหมายวรรคตอนและพฤติกรรมการแยกวิเคราะห์ที่ผิดปกติอย่างมากนี้เป็นหนึ่งในสิ่งที่ฉันตั้งใจไม่ได้ทำซ้ำและฉันใส่เอกสารไว้ รายการความแตกต่าง ฉันสร้างechodot
คำสั่งภายนอกแทนซึ่งสามารถใช้นามแฝงได้echo.
ตามต้องการ
echo(
เป็นรุ่นที่ปลอดภัยเท่านั้น
echo.
อาจจะไม่ทำงาน