Windows Batch (CMD) có lẽ là ngôn ngữ ít phù hợp nhất để chơi gôn.
Tránh các ký tự dòng mới . Nếu bạn đang tìm mã ngắn nhất tính theo byte, trái ngược với ký tự, bạn sẽ muốn loại bỏ tất cả các trả về vận chuyển không cần thiết (ký tự dòng mới = 2 byte). Bạn có thể sử dụng &
thao tác để thực hiện việc này, cắt bớt một byte cho mỗi lệnh.
echo Hello&echo World.
Đặt biến . Khi cài đặt biến bằng các công tắc, set
trình phân tích cú pháp sẽ bỏ qua khoảng trắng.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
Lưu ý rằng các quy tắc phân tích cú pháp tương tự không áp dụng cho tất cả các lệnh - như một ví dụ, cho các vòng lặp yêu cầu khoảng trắng. Ngoại trừ giữa set, string, or command
(tức là những gì bên trong ngoặc) và từ do
.
for /f %%a in (file.txt)do ...
Biểu thức toán học đơn giản . Ngoài ra, hãy chú ý biểu thức mà tôi đã sử dụng để tăng trong set /a
lệnh. Đối với các biểu thức toán học đơn giản sử dụng += -= *= /=
thay vì (ví dụ) set /a a=%a%+1
.
Tập hợp đầu ra lệnh . Để có được đầu ra của một lệnh, đôi khi có thể hữu ích khi xuất và đọc từ một tệp, trong đó bạn có thể đã sử dụng một vòng lặp for để thu thập đầu ra:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
gửi thiết bị xuất chuẩn đến một tệp có tên f, >f
bắt đầu một lệnh mới &
và nhận nội dung của tệp trong một biến set/pa=<f
. Rõ ràng điều này không phải lúc nào cũng hữu ích. Nhưng nó có thể là khi tất cả những gì bạn cần là một dòng đầu ra.
Đầu ra lệnh . Khi chặn đầu ra lệnh, sử dụng @
trước các lệnh, trừ khi bạn cần triệt tiêu hơn 9 lệnh, trong trường hợp đó, sử dụng @echo off
khi bắt đầu tập lệnh của bạn. @echo off
dài 9 byte và do đó thường sẽ tiết kiệm được nhiều byte hơn với các tập lệnh dài hơn.
Các lệnh thường làm nhiều hơn chỉ là những gì rõ ràng - hãy nghĩ về những gì các lệnh của bạn đang làm. Ví dụ; nếu bạn cần đặt một biến và lặp lại một biến khác, thay vì:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
Bạn có thể sử dụng lệnh set với công /p
tắc để xuất %a%
cho bạn.
set a=OUTPUT
echo test>f
set /p b=%a%<f
Hoàn toàn chơi gôn ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Một vài ví dụ - Đếm tổng của tất cả các chữ số - phỏng đoán của Goldbach .
Bất kỳ lời khuyên nào khác đều được đánh giá cao hơn - tôi sẽ tiếp tục cập nhật điều này nếu tôi nghĩ về bất cứ điều gì khác.