วิธีสร้างไฟล์ว่างที่บรรทัดคำสั่งใน Windows


494

วิธีสร้างไฟล์เปล่าที่บรรทัดคำสั่ง DOS / Windows

ฉันเหนื่อย:

copy nul > file.txt

แต่จะแสดงเสมอว่าไฟล์ถูกคัดลอก

มีวิธีอื่นในมาตรฐาน cmd หรือไม่

ควรเป็นวิธีที่ไม่ต้องการคำสั่งtouchจาก Cygwin หรือคำสั่งที่ไม่เป็นมาตรฐานอื่น ๆ คำสั่งจำเป็นต้องเรียกใช้จากสคริปต์เพื่อให้การกดแป้นไม่สามารถใช้งานได้


เพิ่งพบคำสั่งแบทช์จริงทำให้ไฟล์ว่างเปล่า (0 ไบต์): ฉันได้อัพเดตคำตอบแล้ว
VonC

3
ทำซ้ำ: stackoverflow.com/questions/210201 "วิธีสร้างไฟล์ข้อความเปล่าจากไฟล์แบตช์" (แต่ IMHO คำตอบดีกว่าที่นี่)
Peter Mortensen

ใช่คำสั่งคัดลอก nul> file.txt ถูกสร้างขึ้นโดยมีข้อความ "1 ไฟล์ที่คัดลอก" ไม่ได้สร้างไฟล์เปล่า
Ripon Al Wasim

5
สิ่งนี้สำหรับฉันเพียงพิสูจน์ว่า MS-DOS เป็นขยะถ้าคุณไม่สามารถสร้างไฟล์ว่างเปล่าด้วยคำสั่งเดียว
Kolob Canyon

2
@KolobCanyon: คุณสามารถแน่นอนต่อคำตอบโพสต์แล้ว แต่คุณคิดว่าความสามารถในการสร้างไฟล์เปล่าอย่างรวดเร็วควรเป็นสิ่งสำคัญสำหรับระบบปฏิบัติการที่มุ่งเป้าไปที่ผู้ใช้ปลายทางและต้องการที่จะทำงานใน RAM ขนาด 16K หรือไม่? ไม่ใช่สิ่งที่มีประโยชน์อย่างยิ่งที่ต้องทำหลังจากทั้งหมดยกเว้นในกรณีที่เกิดขึ้นได้ยาก
แฮร์รี่จอห์นสตัน

คำตอบ:


571

โดยไม่ต้องเปลี่ยนเส้นทางลัควูหรือเอริค Konstantopoulos ชี้ ออกไปที่:

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

" วิธีสร้างไฟล์ข้อความเปล่าจากไฟล์แบตช์ " (2008) ยังชี้ไปที่:

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

Nomadพูดถึงต้นฉบับ :

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

ในจิตวิญญาณเดียวกันซามูเอลแนะนำในความคิดเห็น :

อันที่สั้นที่สุดที่ฉันใช้นั้นก็คือ Nomad:

.>out.txt

มันทำให้เกิดข้อผิดพลาด:

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

แต่ข้อผิดพลาดนี้อยู่ใน stderr และ>เปลี่ยนเส้นทาง stdout เท่านั้นซึ่งไม่มีการผลิตอะไรเลย
ดังนั้นการสร้างไฟล์เปล่า ข้อความแสดงข้อผิดพลาดสามารถถูกละเว้นได้ที่นี่


(คำตอบเดิมพฤศจิกายน 2009)

echo.>filename

( echo ""จริง ๆ แล้วจะใส่ "" ลงในไฟล์! และechoหากไม่มี '.' จะใส่ " Command ECHO activated" ในไฟล์ ... )

หมายเหตุ: ไฟล์ผลลัพธ์ไม่ว่างเปล่าแต่มีลำดับบรรทัดการส่งคืน: 2 ไบต์


การสนทนานี้ชี้ไปที่โซลูชันแบทช์จริงสำหรับไฟล์ว่างเปล่าจริง:

 <nul (set/p z=) >filename

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

" <nul" ไพพ์nulตอบสนองต่อset/pคำสั่งซึ่งจะทำให้ตัวแปรที่ใช้ยังคงไม่เปลี่ยนแปลง ตามปกติด้วยset/pสตริงทางด้านขวาของเครื่องหมายเท่ากับจะแสดงเป็นพร้อมต์ที่ไม่มี CRLF

เนื่องจากที่นี่ "สตริงทางด้านขวาของเครื่องหมายเท่ากับ" ว่างเปล่า ... ผลที่ได้คือไฟล์เปล่า


ความแตกต่างกับcd. > filename(ซึ่งถูกกล่าวถึงในคำตอบของ Patrick Cuffและยังผลิตไฟล์ความยาว 0 ไบต์) ก็คือ "บิตของการเปลี่ยนเส้นทาง" ( <nul...เคล็ดลับ) นี้สามารถใช้เพื่อสะท้อนเส้นโดยไม่มี CR :

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

dirคำสั่งควรระบุขนาดของไฟล์เป็น 11 ไบต์: " helloworld!"


2
คุณต้องการecho.>filenameเพราะมันจะรวมถึงพื้นที่และอักขระขึ้นบรรทัดใหม่
Agent_9191

1
การใช้remคำสั่งหลีกเลี่ยงการสร้างไฟล์ที่มีบรรทัดว่างอยู่
Greg Hewgill

@ Agent_9191: จริงฉันได้อัพเดทคำตอบแล้ว @ Greg: ไม่แน่ใจว่าสิ่งที่คุณหมายถึง: rem>filenameจะให้ผลลัพธ์เดียวกัน (2 bytes)
VonC

3
Noufal Ibrahim: อย่าปล่อยให้เรื่องนี้หลอกคุณ เพียงแค่ดูคำตอบต่อไปซึ่งมีวิธีแก้ปัญหาที่ง่ายกว่าและทำงานได้อย่างเท่าเทียมกัน สิ่งที่ทำที่นี่ผิดบางส่วนในกรณีแรก (ไม่ว่างเปล่า แต่มีการแบ่งบรรทัด) และวิธีที่ซับซ้อนในกรณีที่สอง
Joey

1
@barlop ใช่: นั่นคือจุด: มันก่อให้เกิดข้อผิดพลาดใน stderr แต่ไม่มีอะไร (สตริงว่าง) ใน stdout และ>เปลี่ยนเส้นทาง stdout out.txtเท่านั้นที่จะ ดังนั้นการสร้างไฟล์เปล่า คุณสามารถไม่สนใจข้อความแสดงข้อผิดพลาดในบริบทนี้
VonC

270

ลองสิ่งนี้:

type NUL > 1.txt

สิ่งนี้จะสร้างไฟล์ว่างเปล่า


สิ่งนี้จะเพิ่ม "NUL is ./NUL" ให้กับไฟล์
dshgna

106

นี่คือวิธีอื่น:

cd. > filename

11
cd. > filenameใช้งานไม่ได้สำหรับฉันแทนการcd > filename ทำงาน!
NaveenDA

3
"cd.> filename" สร้างไฟล์ว่างเปล่ามิฉะนั้นคุณจะพิมพ์ไฟล์ในไฟล์ที่สร้างขึ้นใหม่โดยใช้คำสั่ง "cd> filename"
niketan

6
ใช้สิ่งนี้: cd . > filename.extensionหมายความว่าคุณต้องการช่องว่างระหว่างcdและ.
AIon

77

หากคุณต้องการไฟล์ที่ว่างเปล่าโดยสิ้นเชิงโดยไม่มีเอาต์พุตใด ๆ ที่จะ stdout คุณสามารถโกงเล็กน้อย:

copy nul file.txt > nul

เพียงแค่เปลี่ยนเส้นทาง stdout เป็นศูนย์และผลลัพธ์จากการคัดลอกจะหายไป


1
มันล้มเหลวหาก file.txt มีอยู่
Grendler

6
การล้มเหลวหากไฟล์นั้นมีพฤติกรรมที่ดีตามที่ฉันเข้าใจคำถาม
wallyk

32
+1 มันน่าประหลาดใจที่คำตอบที่ยอมรับนั้นเป็นอะไรที่ผิดไปครึ่งหนึ่งและที่ซับซ้อนเพียงครึ่งเดียวในขณะที่คำตอบที่ถูกต้องนั้นแทบจะไม่ได้รับเครดิตเลย หากต้องการเพิ่มสิ่งนี้: type nul>fileจะเป็นอีกวิธีหนึ่ง
Joey

@ โจอี้คนที่ยอมรับมีโซลูชันมากมายที่ทำงานเพื่อสร้างไฟล์ว่าง 0 ไบต์
barlop

2
@barlop: สำหรับการอ้างอิงนี่เป็นคำตอบที่ได้รับการยอมรับในเวลาที่เขียนความคิดเห็น ฉันไม่ได้รับการแจ้งเตือนทุกครั้งที่คำตอบเปลี่ยนแปลงไปฉันอ้างอิงในความคิดเห็น
Joey

48

เปิดไฟล์ :

type file.txt

ไฟล์ใหม่:

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

แก้ไขเนื้อหา:

notepad file.txt

สำเนา

copy file1.txt file1Copy.txt

เปลี่ยนชื่อ

rename file1.txt file1_rename.txt

ลบไฟล์ :

del file.txt

ภาพรวมที่ดีของคำสั่ง cmd
KargWare

32

อ่านความคิดเห็นในโพสต์ของฉันฉันต้องยอมรับว่าฉันไม่ได้อ่านคำถามที่ถูกต้อง

ในบรรทัดคำสั่งของ Windows วิธีหนึ่งคือใช้fsutil :

fsutil file createnew <filename> <size>

ตัวอย่าง:

fsutil file createnew myEmptyFile.txt 0

ด้านล่างสำหรับบรรทัดคำสั่ง * nix

touch filename

คำสั่งนี้เปลี่ยนวันที่แก้ไขของไฟล์หรือสร้างหากไม่พบไฟล์


น่าเสียดายที่คำถามนี้ระบุว่า "โดยไม่ต้องมีคำสั่งสัมผัสจาก Cygwin"
qid

3
มีการใช้งานที่ไม่ Cygwin ของคำสั่งสัมผัส: unxutils.sourceforge.netเป็นสิ่งที่ดี
Greg Hewgill

ใน * ระวังฉันเป็นบางส่วนที่ง่าย> filenameซึ่งสามารถใช้ในการตัดทอนไฟล์ที่มีอยู่
Frank Farmer

fsutilต้องการสิทธิ์การดูแลระบบ นั่นเป็นเรื่องที่ค่อนข้างยากที่จะถามเพียงแค่สร้างไฟล์เปล่า ...
Joey

@Joey คำสั่งเหล่านี้ไม่ได้สร้างไฟล์เปล่าเลยใช่ไหม? แม้แต่ด้านล่างที่มี 120 คะแนนก็มีมากมายเมื่อคุณคุ้นเคย
johnny

29
echo "" > filename

ฉันเชื่อว่าใช้งานได้กับ Windows / DOS แต่ประสบการณ์การใช้งานจริงครั้งล่าสุดของฉันเมื่อไม่นานมานี้ ฉันรู้ว่ามันใช้งานได้กับระบบปฏิบัติการPOSIX ที่เป็นมาตรฐาน


2
ดูเหมือนว่าคำตอบของ VonC นั้นดีกว่าของฉันดังนั้นโปรดโหวตมันแทน
กริช

3
น่าเสียดายที่: echo "" แสดงเครื่องหมายอัญประกาศคู่และถูกเขียนไปยังไฟล์เมื่อมีการเปลี่ยนเส้นทางไปยังสตรีม เช่นเดียวกับที่เกิดขึ้นกับ: echo> ชื่อไฟล์เพราะมันเขียนว่า ECHO นั้นเปิด / ปิดไปที่ไฟล์เช่นกัน
Grendler

คุณอาจจะใส่ "@echo off" ในบรรทัดก่อนที่จะสร้างไฟล์เพื่อหลีกเลี่ยงสิ่งนั้น
กริช

27
call>file.txt

นี่เป็นวิธีที่สะอาดที่สุดที่ฉันรู้


มันเกี่ยวกับสิ่งนี้ที่ "สะอาด" คืออะไร?
GreenAsJade

4
มันไม่มีอะไรส่งออกไปยังไฟล์ในขณะที่ง่ายต่อการจดจำและใช้
nephi12

นี่เป็นทางออกที่ง่ายที่สุดที่ใช้งานได้และจดจำได้ง่ายที่สุด
nhershy

12
cd > filename.cfg 

ทำงานเมื่อสร้างไฟล์ใน C: / Program Files ที่คุณไม่มีสิทธิ์เข้าถึงเพื่อสร้างไฟล์โดยตรง


11

คุณสามารถเขียนสัมผัสของคุณเอง

//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

คัดลอก SomeFile.txt Enter

Ctrl-Z Enter


ฉันคิดคำถามว่าคำสั่งจะทำงานจากสคริปต์ดังนั้นน่าเสียดายที่การโต้ตอบของแป้นพิมพ์ไม่ทำงาน ขอบคุณ
Grendler


6

เพื่อให้คุณสามารถสร้างไฟล์ว่างได้ด้วย

'' > newfile.txt

นำทางไปยังไดเรกทอรีและพิมพ์คำสั่งด้านบนในหน้าต่าง PowerShell

หมายเหตุสิ่งนี้จะไม่ทำงานบนพรอมต์คำสั่ง windows


5

ลองสิ่งนี้: abc > myFile.txt อันดับแรกมันจะสร้างไฟล์ที่มีชื่อmyFile.txtในไดเร็กทอรีการทำงานปัจจุบัน (ในพร้อมท์คำสั่ง) จากนั้นจะเรียกใช้คำสั่งabcที่ไม่ใช่คำสั่งที่ถูกต้อง myFile.txtด้วยวิธีนี้คุณมีอากาศไฟล์ใหม่ที่ว่างเปล่าที่มีชื่อ


2
อาจผิดมากหากabcอยู่ในพา ธ และเป็นฟังก์ชั่นอำนวยความสะดวกในการฟอร์แมตไดรฟ์ทั้งหมดยกเว้นไดเรกทอรีการติดตั้ง
นิ้วเลือดออก

5

type nul>filename จะสร้างไฟล์ว่างใหม่

ขอโทษทีมาช้าไปหน่อย.

อัปเดต : copy nul filenameทำงานได้โดยไม่เปลี่ยนเส้นทาง (โซลูชันที่ชัดเจนยิ่งขึ้น)



4

คุณสามารถใช้:

echo. 2>foo

ผลลัพธ์การดีบักสำหรับecho.เกือบจะว่างเปล่าแน่นอน


4

ฉันอ่านหลาย ๆ กระทู้ แต่มันไม่ได้เป็นวิธีที่สั้นที่สุด

กรุณาใช้คำสั่ง:

>copy /b NUL empty_file.txt


4

คุณสามารถใช้คำสั่งเก่า

copy con file_name.ext

อย่าพิมพ์อะไรเลยเพียงแค่กด F6 เพื่อบันทึกอย่างไรก็ตามมันจะพิมพ์ "File copy" แต่เมื่อคุณเปิดไฟล์มันจะว่างเปล่า


4

สำหรับการสร้างไฟล์ประเภทใด ๆ คุณสามารถใช้รหัสต่อไปนี้

พิมพ์ nul> (file_name). (file_type)

เช่น. หากคุณต้องการสร้างไฟล์ข้อความแล้ว

พิมพ์ nul> demo.txt

หากคุณต้องการสร้างไฟล์จาวาสคริปต์แล้ว

พิมพ์ nul> demo.js


3

สิ่งนี้ได้ผลสำหรับฉัน

echo > file.extension

นี่เป็นอีกวิธีที่ฉันพบในวันนี้รับแนวคิดจากคำตอบอื่น ๆ แต่ใช้ได้

sometext > filename.extension

เช่น.

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

นี่จะแสดงข้อความแสดงข้อผิดพลาดในพร้อมท์คำสั่งว่า

xyz ไม่ได้เป็นคำสั่งภายในหรือภายนอก, โปรแกรมที่ทำงานได้หรือแบตช์ไฟล์

แต่สิ่งแปลก ๆ ที่ฉันพบคือไฟล์กำลังถูกสร้างในไดเรกทอรีแม้ว่าคำสั่งไม่ใช่คำสั่ง windows มาตรฐาน


1
มี "การจัดการ" มากกว่าหนึ่งรายการที่แอปพลิเคชันคอนโซลสามารถอ่าน / เขียนได้ มาตรฐานคือ: (0) STDIN, (1) STDOUT และ (2) STDERR ฉันเชื่อว่าเหตุผลที่กลอุบายของคุณทำงานที่นี่เป็นเพราะผลลัพธ์ทั้งหมดจะไปที่หมายเลขอ้างอิงข้อผิดพลาด แต่คุณเพียงนำ STDOUT ไปยังไฟล์เท่านั้น ลองทำ: "xyz> emptyfile.txt 2> & 1" เพื่อเปลี่ยนเส้นทาง STDERR ไปยัง STDOUT ที่ใช้งานอยู่ซึ่งจะเกิดการเปลี่ยนเส้นทางไปที่ "emptyfile.txt" คุณควรเห็นข้อความแสดงข้อผิดพลาดภายในไฟล์นั้นในตอนนี้
Brent Rittenhouse


3

บน Windows ฉันพยายามทำสิ่งนี้

echo off > fff1.txt

และสร้างไฟล์ชื่อfff1.txtด้วยขนาดไฟล์ 0kb

ฉันไม่พบคำสั่งอื่นนอกเหนือจากนี้ที่สามารถสร้างไฟล์ว่างได้

หมายเหตุ: คุณจะต้องอยู่ในไดเรกทอรีที่คุณต้องการสร้างไฟล์


อย่าลืมที่จะสะท้อนหลังจากสร้างไฟล์ถ้าคุณต้องการ
QMaster

คำสั่งนี้หยุดการทำงานของ cmd หลังจากคลิก ENTER
Kavin Raju S

ฉันไม่แน่ใจว่าทำไมถึงทำเช่นนั้น แต่ฉันเดาว่าคุณควรทำ "echo on" หลังจากป้อนคำสั่งด้านบน
Omkar Agrawal


2

ฉันเพิ่งลองใช้ windows

copy con file.txt

จากนั้นกดปุ่มEnterจากนั้นกดCtrl+Z Enter

และมันใช้งานได้สำหรับฉัน

สำหรับ Ubuntu ฉันมักจะสร้างไฟล์โดยใช้คำสั่ง VI

vi file.txt

มันจะเปิดไฟล์จากนั้นกดESCปุ่มจากนั้นพิมพ์: wpแล้วกดenterปุ่ม มันจะสร้างไฟล์ใหม่ที่มีข้อมูลว่างเปล่า


2
  • echo '' > %1สร้างไฟล์ค้างคาวที่มีเนื้อหา (ตั้งชื่อไฟล์เป็น touch.bat)
  • เพิ่มโฟลเดอร์ไปยังตัวแปร PATH
  • คุณสามารถใช้ระบบสัมผัสเพื่อสร้างไฟล์ (เช่นtouch temp.txtสร้างไฟล์ temp.txt)

ตรวจสอบนี้บทความสำหรับข้อมูลเพิ่มเติม


1

วันนี้ฉันได้ค้นพบใหม่ :)

สิ่งนี้จะเปลี่ยนชื่อหน้าต่างบรรทัดคำสั่ง แต่จะสร้างไฟล์ว่าง

title > file.txt

1

เรียกใช้ CMD ในโหมดผู้ดูแลระบบและพิมพ์สิ่งนี้:

NUL > file_name.extention

หรือคุณพิมพ์สิ่งนี้

echo .> file_name.extention

1

นี่คือวิธีอื่น:

rem/ > file.ext

เครื่องหมายทับ/มีผลบังคับใช้; remโดยไม่ต้องเปลี่ยนเส้นทางมันเป็นส่วนหนึ่งที่ถูกออกความเห็นโดย


0

สร้างไฟล์ของคุณก่อนเพื่อให้มีอยู่:

echo . > myfile.txt

จากนั้นเขียนทับไฟล์ที่สร้างด้วยเวอร์ชันว่างโดยใช้copyคำสั่ง:

copy /y nul myfile.txt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.