Làm cách nào để tạo một tệp trống tại dòng lệnh trong Windows?


494

Làm cách nào để tạo một tệp trống tại dòng lệnh DOS / Windows?

Tôi đã thử:

copy nul > file.txt

nhưng nó luôn hiển thị rằng một tập tin đã được sao chép.

Có phương pháp nào khác trong cmd tiêu chuẩn không?

Nó phải là một phương thức không yêu cầu lệnh cảm ứng từ Cygwin hoặc bất kỳ lệnh không chuẩn nào khác. Lệnh cần chạy từ một tập lệnh để không thể sử dụng tổ hợp phím.


Chỉ tìm thấy một lệnh bó thực sự dẫn đến một tệp trống (0 byte): Tôi đã cập nhật câu trả lời của mình.
VonC

3
Sao y: stackoverflow.com/questions/210201 , "Làm cách nào để tạo tệp văn bản trống từ tệp bó?". (Nhưng, IMHO, câu trả lời tốt hơn ở đây.)
Peter Mortensen

Có, lệnh sao chép nul> file.txt được tạo có văn bản "1 tệp được sao chép." Tập tin trống không được tạo.
Ripon Al Wasim

5
Điều này với tôi chỉ chứng minh rằng MS-DOS là rác nếu bạn không thể tạo một tệp trống đơn giản bằng một lệnh.
Hẻm núi Kolob

2
@KolobCanyon: tất nhiên, bạn có thể, theo các câu trả lời đã được đăng. Nhưng bạn có thực sự nghĩ rằng khả năng tạo nhanh một tập tin trống nên là ưu tiên hàng đầu của một hệ điều hành nhắm đến người dùng cuối và cần chạy trong 16K RAM? Rốt cuộc, đó không phải là một điều đặc biệt hữu ích, ngoại trừ trong một vài trường hợp cạnh hiếm gặp.
Harry Johnston

Câu trả lời:


571

Không chuyển hướng, Luc Vu hoặc Erik Konstantopoulos chỉ ra :

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt

" Cách tạo tệp văn bản trống từ tệp bó? " (2008) cũng trỏ đến:

type NUL > EmptyFile.txt
# also
echo. 2>EmptyFile.txt
copy nul file.txt > nul # also in qid's answer below
REM. > empty.file
fsutil file createnew file.cmd 0 # to create a file on a mapped drive

Người du mục đề cập đến một bản gốc :

C:\Users\VonC\prog\tests>aaaa > empty_file
'aaaa' is not recognized as an internal or external command, operable program or batch file.

C:\Users\VonC\prog\tests>dir

 Folder C:\Users\VonC\prog\tests

27/11/2013  10:40    <REP>          .
27/11/2013  10:40    <REP>          ..
27/11/2013  10:40                 0 empty_file

Trong cùng một tinh thần, Samuel gợi ý trong các ý kiến :

cái ngắn nhất tôi sử dụng về cơ bản là cái của Nomad:

.>out.txt

Nó báo lỗi:

'.' is not recognized as an internal or external command

Nhưng lỗi này là trên stderr. Và >chỉ chuyển hướng thiết bị xuất chuẩn, nơi không có gì được sản xuất.
Do đó việc tạo ra một tập tin trống . Thông báo lỗi có thể được bỏ qua ở đây.


(Câu trả lời gốc, tháng 11 năm 2009)

echo.>filename

( echo ""thực sự sẽ đặt "" trong tệp! Và echokhông có '.' sẽ đặt " Command ECHO activated" trong tệp ...)

Lưu ý: tệp kết quả không trống nhưng bao gồm chuỗi dòng trả về: 2 byte.


Thảo luận này chỉ ra một giải pháp lô thực sự cho một tệp trống thực sự :

 <nul (set/p z=) >filename

 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

" <nul" Đặt một nulphản hồi cho set/plệnh, điều này sẽ khiến biến được sử dụng không thay đổi. Như thường lệ set/p, chuỗi bên phải của dấu bằng được hiển thị dưới dạng lời nhắc không có CRLF.

Vì ở đây "chuỗi bên phải dấu bằng" trống ... kết quả là một tệp trống.


Sự khác biệt với cd. > filename(được đề cập trong câu trả lời của Patrick Cuff và cũng tạo ra tệp có độ dài 0 byte) là "bit chuyển hướng" này ( <nul...mẹo) có thể được sử dụng để lặp lại các dòng mà không có CR :

<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt

Các dirlệnh nên chỉ ra kích thước tập tin là 11 byte: " helloworld!".


2
bạn thực sự muốn echo.>filenamebởi vì nó sẽ bao gồm không gian cũng như ký tự dòng mới.
Đặc vụ_9191

1
Sử dụng remlệnh để tránh tạo một tệp có một dòng trống trong đó.
Greg Hewgill

@ Agent_9191: đúng, tôi đã cập nhật câu trả lời của mình. @Greg: không chắc ý của bạn là gì: rem>filenametạo ra kết quả tương tự (2 byte)
VonC

3
Noufal Ibrahim: đừng để điều này đánh lừa bạn; chỉ cần xem câu trả lời tiếp theo có giải pháp dễ dàng hơn và hiệu quả hơn nhiều. Những gì được thực hiện ở đây là một phần sai trong trường hợp đầu tiên (không trống nhưng chứa ngắt dòng) và cách tính toán quá mức trong trường hợp thứ hai.
Joey

1
@barlop Có: đó là điểm: nó kích hoạt một số thông báo lỗi trên thiết bị lỗi chuẩn, nhưng không có gì (chuỗi trống) trên thiết bị xuất chuẩn. Và >chuyển hướng stdout chỉ đến out.txt. Do đó việc tạo ra một tập tin trống. Bạn có thể bỏ qua thông báo lỗi trong ngữ cảnh này.
VonC

270

Thử cái này:

type NUL > 1.txt

Điều này chắc chắn sẽ tạo ra một tập tin trống.


Điều này thêm "NUL là ./NUL" vào tệp
dshgna

106

Đây là một cách khác:

cd. > filename

11
cd. > filenamekhông phải là công việc cho tôi thay vì cd > filename làm việc!
NaveenDA

3
"cd.> filename" tạo tập tin trống khác, bạn sẽ có filepath được in trong tập tin mới tạo bằng lệnh "cd> filename".
niketan

6
Sử dụng cái này: cd . > filename.extensionCó nghĩa là bạn cần một khoảng trống giữa cd.
AIon

77

Nếu bạn thực sự muốn một tệp hoàn toàn trống, không có bất kỳ đầu ra nào cho thiết bị xuất chuẩn, bạn có thể gian lận một chút:

copy nul file.txt > nul

Chỉ cần chuyển hướng thiết bị xuất chuẩn sang nul và đầu ra từ bản sao sẽ biến mất.


1
Nó không thành công nếu file.txt tồn tại.
Grendler

6
Không có nếu tập tin tồn tại là hành vi tốt như tôi hiểu câu hỏi.
wallyk

32
+1. Thật đáng ngạc nhiên khi câu trả lời được chấp nhận là một cái gì đó nửa sai và nửa sai lầm trong khi câu trả lời rõ ràng gần như không có tín dụng. Để thêm vào điều này: type nul>filesẽ là một cách khác.
Joey

@Jeyey người được chấp nhận có một loạt các giải pháp hoạt động để tạo một tệp 0 byte trống.
barlop

2
@barlop: Để tham khảo, đây là câu trả lời được chấp nhận tại thời điểm bình luận được viết. Tôi không nhận được thông báo mỗi lần thay đổi câu trả lời mà tôi tham khảo trong một nhận xét.
Joey

48

Mở tệp:

type file.txt

Tập tin mới :

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>

Chỉnh sửa nội dung:

notepad file.txt

Sao chép

copy file1.txt file1Copy.txt

Đổi tên

rename file1.txt file1_rename.txt

Xóa tài liệu :

del file.txt

Tổng quan đẹp về các lệnh cmd
KargWare

32

Đọc bình luận trên bài viết của tôi, tôi phải thừa nhận tôi đã không đọc đúng câu hỏi.

Trên dòng lệnh Windows, một cách sẽ là sử dụng fsutil :

fsutil file createnew <filename> <size>

Một ví dụ:

fsutil file createnew myEmptyFile.txt 0

Dưới đây là cho dòng lệnh * nix.

touch filename

Lệnh này thay đổi ngày sửa đổi của tệp hoặc tạo tệp nếu không tìm thấy tệp.


Thật không may, câu hỏi đặc biệt nêu rõ, "Không có lệnh cảm ứng từ Cygwin."
qid ngày

3
Có tồn tại các triển khai không phải Cygwin của lệnh cảm ứng: unxutils.sourceforge.net là tốt.
Greg Hewgill

Trong * nix, cá nhân tôi là một phần đơn giản > filename, cũng có thể được sử dụng để cắt bớt một tệp hiện có.
Nông dân Frank

fsutilcần đặc quyền hành chính. Đó là một chút nhiều để yêu cầu chỉ đơn giản là tạo một tập tin trống ...
Joey

@Joey Không phải tất cả các lệnh này hơi nhiều để tạo một tệp trống? Ngay cả một điểm dưới đây với 120 điểm là rất nhiều khi bạn đã quen với việc chạm vào.
johnny

29
echo "" > filename

Tôi tin rằng điều này hoạt động trên Windows / DOS, nhưng trải nghiệm thực hành cuối cùng của tôi với một trong hai cách đây khá lâu. Tôi thực sự biết rằng nó hoạt động trên cơ bản bất kỳ HĐH tuân thủ POSIX nào .


2
Thay vào đó, câu trả lời của VonC tốt hơn câu trả lời của tôi, vì vậy xin vui lòng thay thế.
Kris

3
Thật không may: echo "" hiển thị dấu ngoặc kép và chúng được ghi vào tệp khi luồng được chuyển hướng đến nó. Điều tương tự cũng xảy ra với just: echo> filename vì nó ghi ECHO cũng bị tắt / bật vào tệp.
Grendler

có lẽ bạn có thể đặt "@echo off" trên dòng trước khi tạo tệp để phá vỡ điều đó?
Kris

27
call>file.txt

đây là cách sạch nhất mà tôi biết


Điều gì về điều này là "sạch"?
GreenAsJade

4
nó không xuất ra tệp nào trong khi dễ nhớ và sử dụng.
nephi12

Đây là giải pháp đơn giản nhất có hiệu quả và dễ nhớ nhất.
nhershy

12
cd > filename.cfg 

đã hoạt động khi tạo tệp trong C: / Tệp chương trình nơi bạn không có quyền truy cập để tạo tệp trực tiếp.


11

Bạn có thể viết liên lạc của riêng bạn.

//touch.cpp
#include <fstream>
#include <iostream>

int main(int argc, char ** argv;)
{
  if(argc !=2)
  {
    std::cerr << "Must supply a filename as argument" << endl;
    return 1;
  }
  std::ofstream foo(argv[1]);
  foo.close();
  return 0;
}

6

sao chép một sốFile.txt Enter

Ctrl-Z Enter


Tôi đặt ra câu hỏi rằng lệnh sẽ chạy từ tập lệnh nên rất tiếc, bất kỳ tương tác bàn phím nào đều không hoạt động. Dù sao cũng cảm ơn bạn.
Grendler

6

Một phương thức khác tạo ra một tệp byte bằng 0:

break > "file.txt"

6

để bạn có thể tạo một tập tin trống với

'' > newfile.txt

điều hướng đến thư mục và gõ lệnh trên trong cửa sổ PowerShell.

Lưu ý điều này sẽ không hoạt động trên dấu nhắc lệnh của windows.


5

Hãy thử điều này: abc > myFile.txt Đầu tiên, nó sẽ tạo một tệp có tên myFile.txttrong thư mục làm việc hiện tại (trong dấu nhắc lệnh). Sau đó, nó sẽ chạy lệnh abckhông phải là một lệnh hợp lệ. Bằng cách này, bạn đã nhận được một tập tin trống mới với tên myFile.txt.


2
Điều này có thể rất sai nếu abcnằm trong đường dẫn và là một chức năng tiện lợi để định dạng tất cả các ổ đĩa ngoại trừ thư mục cài đặt.
Chảy máu ngón tay

5

type nul>filename sẽ tạo một tập tin trống mới.

Xin lỗi tôi tới trễ.

CẬP NHẬT : Cũng copy nul filenamehoạt động mà không chuyển hướng (giải pháp rõ ràng hơn).


5

Sử dụng copy > your_file_name.extensiontrong dấu nhắc lệnh như

P:\excecise> copy > Sample.txt

4

Bạn cũng có thể sử dụng:

echo. 2>foo

Đầu ra gỡ lỗi cho echo.gần như chắc chắn sẽ trống.


4

Tôi đọc nhiều chủ đề nhưng nó không phải là con đường ngắn nhất.

Vui lòng sử dụng lệnh:

>copy /b NUL empty_file.txt


4

Bạn có thể sử dụng lệnh cũ

copy con file_name.ext

không gõ bất cứ thứ gì, chỉ cần nhấn F6 để lưu nó, tuy nhiên nó sẽ in "Tệp đã sao chép", nhưng khi bạn mở tệp, nó sẽ trống


4

Để tạo bất kỳ loại tệp nào, bạn có thể sử dụng mã sau đây

gõ nul> (file_name). (file_type)

Ví dụ. Nếu bạn muốn tạo một tệp văn bản thì

gõ nul> demo.txt

Nếu bạn muốn tạo một tệp javascript thì

gõ nul> demo.js


3

Điều này làm việc cho tôi,

echo > file.extension

Đây là một cách khác mà tôi tìm thấy ngày hôm nay, có ý tưởng từ các câu trả lời khác nhưng nó đã hoạt động

sometext > filename.extension

Ví dụ.

xyz > emptyfile.txt  //this would create an empty zero byte text file
abc > filename.mp4   //this would create an zero byte MP4 video media file

Điều này sẽ hiển thị một thông báo lỗi trong dấu nhắc lệnh rằng,

xyz không phải là một lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó.

Nhưng điều kỳ lạ tôi tìm thấy là tập tin đang được tạo trong thư mục ngay cả khi lệnh không phải là lệnh windows tiêu chuẩn.


1
Có nhiều "tay cầm" mà các ứng dụng console có thể đọc / ghi vào. Các tiêu chuẩn là: (0) STDIN, (1) STDOUT và (2) STDERR. Tôi tin rằng lý do thủ thuật của bạn hoạt động ở đây là vì tất cả đầu ra sẽ xử lý lỗi nhưng bạn chỉ hướng STDOUT vào tệp. Hãy thử thực hiện: "xyz> blankfile.txt 2> & 1" để chuyển hướng STDERR sang bất cứ thứ gì STDOUT đang sử dụng, điều này xảy ra khi đang chuyển hướng đến "blankfile.txt". Bạn sẽ thấy thông báo lỗi bên trong tệp đó ngay bây giờ.
Brent Rittenhouse


3

Trên Windows tôi đã thử làm điều này

echo off > fff1.txt

và nó đã tạo một tệp có tên fff1.txt với kích thước tệp là 0kb

Tôi không tìm thấy bất kỳ lệnh nào khác ngoài lệnh này có thể tạo một tệp trống.

Lưu ý: Bạn phải ở trong thư mục bạn muốn tạo tệp.


đừng quên lặp lại sau khi tạo tập tin nếu bạn cần.
QMaster

Lệnh này đóng băng cmd sau khi nhấp ENTER.
Kavin Raju S

Tôi không chắc tại sao nó lại như vậy, nhưng tôi đoán rằng bạn nên thực hiện "echo on" sau khi nhập lệnh trên.
Omkar Agrawal


2

Chỉ là tôi đã thử trong windows

copy con file.txt

sau đó nhấn phím Enterrồi nhấnCtrl+Z Enter

Và nó làm việc cho tôi.

Đối với Ubuntu thường tôi đang tạo một tệp bằng lệnh VI

vi file.txt

Nó sẽ mở tập tin sau đó nhấn ESCphím rồi gõ : wp rồi nhấn enterphím. Nó sẽ tạo một tập tin mới với dữ liệu trống.


2
  • tạo một tập tin bat với nội dung echo '' > %1. (đặt tên tệp là touch.bat)
  • thêm thư mục vào biến PATH.
  • bạn có thể sử dụng cảm ứng để tạo tập tin. (Ví dụ: touch temp.txttạo tệp temp.txt)

kiểm tra này bài viết để biết thêm thông tin.


1

Hôm nay tôi đã phát hiện ra một cái mới :)

Điều này sẽ thay đổi tiêu đề cửa sổ dòng lệnh, nhưng cũng sẽ tạo một tệp trống.

title > file.txt

1

Chạy CMD trong chế độ quản trị viên và gõ này:

NUL > file_name.extention

hoặc bạn gõ cái này

echo .> file_name.extention

1

Đây là một cách khác:

rem/ > file.ext

Dấu gạch chéo /là bắt buộc; không có nó, phần chuyển hướng đã được nhận xét bởi rem.


0

Đầu tiên tạo tập tin của bạn để nó tồn tại:

echo . > myfile.txt

Sau đó ghi đè tệp đã tạo bằng phiên bản trống bằng copylệnh:

copy /y nul myfile.txt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.