Tôi đã có một mẹo vặt trong Windows cmd.exe
(ít nhất lên đến XP) để mô phỏng hành vi của UNIX echo mà không có dòng mới, echo -n
. Ví dụ: lệnh:Tương đương với Windows của "echo -n" không còn hoạt động trong Win7
<nul: set /p junk= xyzzy
sẽ cho kết quả chính xác sáu ký tự là đầu ra, không gian hàng đầu và chuỗi "xyzzy" và không có gì khác.
Nếu bạn quan tâm đến lý do tại sao công trình này, nó thực sự là một lệnh đầu vào mà kết quả đầu ra
" xyzzy"
như dấu nhắc sau đó chờ đợi cho người dùng nhập vào trước khi gán đầu vào đó để biếnjunk
môi trường. Trong trường hợp đặc biệt này, nó không đợi đầu vào của người dùng vì nó lấy đầu vào từ thiết bịnul
.
Nó khá hữu ích trong các tập lệnh cmd
khi (ví dụ) xử lý tệp trong một vòng lặp (một lần lặp cho mỗi tệp) mà bạn muốn liệt kê nhiều hơn một dòng. Bằng cách sử dụng thủ thuật này, bạn có thể chỉ đơn giản là sản lượng mỗi tên tập tin sau đó là một không gian và không xuống dòng sau đó, sau khi vòng lặp, đầu ra một dòng mới để kết thúc:
Processing files:
file1.txt file42.txt p0rn.zip
Bây giờ tôi khám phá ra rằng, hệ điều hành Windows 7, những không gian không còn đầu ra vì vậy những gì tôi nhận được là:
Processing files:
file1.txtfile42.txtp0rn.zip
có cách nào tôi có thể nhận set /p
để bắt đầu tôn vinh không gian của tôi một lần nữa, hoặc là có một cách khác trong Win7 để đạt được hiệu quả tương tự?
tôi đã cố gắng trích dẫn, sử dụng .
(mà làm việc trong echo
) và thậm chí thoát chuỗi với ^
, nhưng không ai trong số họ có vẻ làm việc:
C:\Pax> <nul: set /p junk= xyzzy
xyzzy
C:\Pax> <nul: set /p junk=" xyzzy"
xyzzy
C:\Pax> <nul: set /p junk=' xyzzy'
' xyzzy'
C:\Pax> <nul: set /p junk=. xyzzy
. xyzzy
C:\Pax> <nul: set /p junk=^ xyzzy
xyzzy
Những gì tôi cần là:
C:\Pax> some_magical_command_with_an_argument xyzzy
xyzzy
sẽ cho tôi (các) khoảng trống ở đầu và không có dòng mới ở cuối.
+1 để thử thực sự khó làm việc trong tệp hàng loạt mà bất kỳ người SANE nào sẽ làm trong PERL hoặc PYTHON. –
@Warren, rất tiếc chính sách ra lệnh chúng tôi chỉ có thể sử dụng những gì có sẵn trên bản cài đặt Win cơ bản. Vì vậy, Perl và Python là ra, mặc dù thực tế tôi có thể có thể làm điều đó trong một nửa dòng mã :-) Tôi _could_ viết lại các kịch bản trong VBScript nhưng tôi hy vọng cho một sửa chữa dễ dàng hơn - các kịch bản không phải là nhỏ. Có nói rằng, tôi có thể có thể chỉ làm bit lặp lại trong VBS vì vậy tôi có thể nhìn vào đó. Nếu bạn đặt câu trả lời đó vào một câu trả lời, tôi sẽ +1 bạn, vì đó là nhận xét của bạn về việc sử dụng một ngôn ngữ phong nha khiến tôi suy nghĩ theo cách đó. – paxdiablo
Vì vậy, công ty của bạn không cho phép mọi người cài đặt phần mềm bằng trình cài đặt? :-) –