Windows Batch (CMD) เป็นภาษาที่เหมาะสมที่สุดสำหรับการตีกอล์ฟ
หลีกเลี่ยงตัวอักษรขึ้นบรรทัดใหม่ หากคุณกำลังมองหารหัสที่สั้นที่สุดเป็นไบต์ซึ่งตรงข้ามกับตัวอักษรคุณจะต้องกำจัดการขึ้นบรรทัดใหม่ที่ไม่จำเป็นออกไป (อักขระขึ้นบรรทัดใหม่ = 2 ไบต์) คุณสามารถใช้การ&
ดำเนินการนี้เพื่อตัดหนึ่งไบต์สำหรับแต่ละคำสั่ง
echo Hello&echo World.
การตั้งค่าตัวแปร เมื่อตั้งค่าตัวแปรโดยใช้สวิตช์set
ตัวแยกวิเคราะห์จะละเว้นช่องว่าง
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
โปรดทราบว่ากฎการแยกวิเคราะห์เดียวกันไม่ได้ใช้กับคำสั่งทั้งหมด - ตัวอย่างเช่นสำหรับลูปต้องใช้ช่องว่าง ยกเว้นระหว่างset, string, or command
(คือสิ่งที่อยู่ภายในวงเล็บ) do
และคำว่า
for /f %%a in (file.txt)do ...
การแสดงออกทางคณิตศาสตร์อย่างง่าย นอกจากนี้สังเกตเห็นการแสดงออกที่ฉันใช้สำหรับการเพิ่มขึ้นในset /a
คำสั่ง สำหรับการแสดงออกทางคณิตศาสตร์อย่างง่ายใช้+= -= *= /=
แทน set /a a=%a%+1
(ตัวอย่าง)
ออกคำสั่งการชุมนุม ในการรับเอาต์พุตของคำสั่งบางครั้งอาจเป็นประโยชน์ในการส่งออกและอ่านจากไฟล์ซึ่งคุณอาจใช้สำหรับลูปเพื่อรวบรวมเอาต์พุต:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
ส่ง stdout ไปยังไฟล์ที่เรียกว่า F, >f
เริ่มต้นคำสั่งใหม่และได้รับเนื้อหาของไฟล์ในตัวแปร&
set/pa=<f
เห็นได้ชัดว่านี่ไม่ได้มีประโยชน์เสมอไป แต่มันอาจเป็นไปได้เมื่อคุณต้องการเพียงแค่เอาต์พุตบรรทัดเดียว
ออกคำสั่ง เมื่อระงับเอาต์พุตคำสั่งให้ใช้@
ก่อนคำสั่งยกเว้นว่าคุณต้องการระงับมากกว่า 9คำสั่งซึ่งในกรณีนี้ให้ใช้@echo off
ที่จุดเริ่มต้นของสคริปต์ของคุณ @echo off
มีความยาว 9 ไบต์และโดยทั่วไปแล้วจะบันทึกเพิ่มเติมด้วยสคริปต์ที่ยาวขึ้น
คำสั่งมักจะทำมากกว่าสิ่งที่ชัดเจน - คิดเกี่ยวกับสิ่งที่คำสั่งของคุณกำลังทำ ตัวอย่างเช่น; หากคุณต้องการตั้งค่าตัวแปรและ echo ตัวแปรอื่นแทน:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
คุณสามารถใช้คำสั่ง set ด้วย/p
สวิตช์เพื่อส่งออก%a%
ให้คุณ
set a=OUTPUT
echo test>f
set /p b=%a%<f
สนามกอล์ฟที่สมบูรณ์ ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
คู่ของ expamples เอ - นับผลรวมของตัวเลขทั้งหมด - การคาดคะเนของ Goldbach
เคล็ดลับอื่น ๆ มีความนิยมมากกว่า - ฉันจะอัปเดตสิ่งนี้ต่อไปหากฉันคิดอย่างอื่น