2011-02-16 26 views
15

Tôi đang tìm số lượng mã ngắn nhất có thể để lấy dòng đầu tiên của tệp văn bản và đặt nó thành biến trong Windows.Mã tệp hàng loạt Windows ngắn nhất để đặt dòng đầu tiên của tệp được đặt thành biến?

Có rất nhiều ví dụ về loại điều này trong các chủ đề khác trên trang web StackExchange này nhưng tôi không phải là tìm cách lặp lại và hiển thị tất cả các dòng trong tệp. Những gì tôi muốn chỉ là chỉ cần nhận dòng đầu tiên.

Trả lời

29
set /p var= <Text.txt 
echo %var% 

tham chiếu từ: http://forums.techguy.org/software-development/551867-batch-file-read-line-text.html Trớ trêu thay những tấm áp phích có thể để có được những dòng đầu tiên nhưng muốn để lặp qua toàn bộ tập tin!

+2

hoạt động tốt, nhưng bạn nên xóa khoảng cách giữa các = và

+0

Tôi chỉ cố gắng những gì bạn đề nghị vs những gì trong câu trả lời và không có sự khác biệt nào khi chạy nó trên win7. Cách duy nhất tôi có thể lấy khoảng trống là bằng cách đặt nó vào tệp Text.txt. Bạn đã thử nghiệm đề xuất của mình chưa? – Joe

+0

Nó chỉ là dòng đầu tiên của tệp – Daniel

8

đây chỉ là một phiên bản ngắn hơn một chút:

set/pz=<file 
echo %z% 
+0

Có, tôi đã xác minh nó . Nó hoạt động hoàn hảo bằng cách loại bỏ 2 không gian. Câu trả lời hay. Tôi cho rằng nó xứng đáng được đánh dấu màu xanh lá cây nhưng vì đây là gần 3 năm sau, tôi sẽ không làm như vậy. Tôi chỉ hy vọng mọi người cung cấp cho bạn những dấu ấn để nhận ra sự đóng góp của bạn. – djangofan

+0

cảm ơn bạn đã xác minh. tôi hy vọng rằng nó có thể giúp ai đó một ngày nào đó, vì vậy tôi đã đăng nó. – nephi12

2

tôi không thể có được điều này để làm việc trong môi trường Windows 7; biến chỉ đơn giản là không được thiết lập. Nhưng đây là một giải pháp hơi dài:

for /F "delims=" %%i in (Text.txt) do ( 
    set Z=%%i 
    goto BREAK1 
) 
:BREAK1 
echo %Z% 
+1

Điều này không thành công khi dòng đầu tiên trống hoặc bắt đầu bằng ';' và khó xử lý khi mở rộng trễ được bật – jeb

1

Nếu mở rộng trì hoãn đã được kích hoạt trước (Setlocal EnableDelayedExpansion) sau đó có một ngắn hơn (one-liner) phiên bản

set /pz=<filename.txt&echo !z! 
Các vấn đề liên quan