วิธีสร้างไฟล์ข้อความเปล่าจากไฟล์แบตช์?


244

ใครสามารถจำคำสั่งในการสร้างไฟล์ว่างใน MSDOS โดยใช้ไฟล์ BAT?


3
นอกจากนี้ที่stackoverflow.com/questions/1702762 "วิธีสร้างไฟล์ว่างที่บรรทัดคำสั่ง"
Peter Mortensen

6
คุณไม่ได้สับสนกับ DOS และcmd.exeคุณเป็นอย่างไร
ผู้ใช้ที่ไม่รู้จัก

อ่านฉัน: Set-Content "your_file.txt" .gitignore -Encoding utf8นี่เป็นกรณี ๆ ไปและบังคับให้เข้ารหัส utf8! (ฉันโพสต์สิ่งนี้เป็นคำตอบ)
Wolfpack'08

คำตอบ:


235
echo. 2>EmptyFile.txt

49
นี่สะท้อนถึงการขึ้นบรรทัดใหม่สู่ stdout แม้ว่า ... คำตอบของฉันไม่ได้
ephemient

7
บางครั้งมันเกี่ยวข้อง ฉันเคยแตะต้องรอบจนกว่าฉันจะได้ความคิดในการคัดลอกไฟล์ NUL (หรือพิมพ์ NUL>) เพื่อรับไฟล์ 0 ไบต์ :-)
Joey

18
ในการรวมคำตอบของ ephemient เข้ากับคำตอบนี้คุณสามารถทำได้: "echo.> NUL 2> EmptyFile.txt" เพื่อให้ได้ผลลัพธ์เดียวกันโดยไม่ต้องขึ้นบรรทัดใหม่
cmptrgeekken

7
ทำไมอยู่.ในecho.
นินห์ฟาม

3
@Reegan หากคุณใช้echo 2โดยไม่มี.คอนโซลจะอ่าน "ECHO ปิดอยู่" การใช้echo. 2เอาต์พุตคอนโซลเงียบอย่างมีประสิทธิภาพโดยการแสดงบรรทัดใหม่เท่านั้น
OneManBand

362
คัดลอก NUL EmptyFile.txt

DOS มีไฟล์พิเศษสองสามไฟล์ (อุปกรณ์จริง ๆ ) ที่มีอยู่ในทุกไดเรกทอรีNULเทียบเท่ากับ UNIX's /dev/null: มันเป็นไฟล์เวทย์มนตร์ที่ว่างเปล่าและทิ้งทุกสิ่งที่คุณเขียนไป นี่คือรายการของคนอื่น ๆ ; CONมีประโยชน์เป็นครั้งคราวเช่นกัน

เพื่อหลีกเลี่ยงการมีเอาต์พุตใด ๆ เลยคุณสามารถใช้

คัดลอก / y NUL EmptyFile.txt> NUL

/yป้องกันจากการถามคำถามที่คุณไม่สามารถมองเห็นได้เมื่อส่งออกไปcopyNUL


36
+1 - คำถามจะระบุไฟล์ว่างเปล่าดังนั้นคำตอบที่ยอมรับจึงผิด
โจ

9
วิธีการแก้ปัญหาของ DannySmurf สร้างไฟล์เปล่าขึ้นมาใหม่โดยขึ้นบรรทัดใหม่ไปที่ stdout ไม่มีอะไรไปที่ stderr (นำไปสู่ไฟล์ใหม่) แต่ขอบคุณสำหรับ +1 ต่อไป
ephemient

2
พิมพ์ nul> EmptyFile.txt เป็นวิธีแก้ปัญหาที่สั้นที่สุด คำตอบของคุณคือคำตอบที่ดีกว่าและดีกว่าเพราะไฟล์ของคุณจะว่างเปล่า +1
TPAKTOPA

3
คำเตือน: ใช่คำถามคือวิธีการสร้างไฟล์เปล่า แต่โดยปกติแล้วคุณต้องการที่จะ "ทำให้แน่ใจว่าไฟล์นั้นมีอยู่" เมื่อใช้copy /Y NULคำสั่งอาจลบเนื้อหาที่มีอยู่ หากคุณคุ้นเคยกับtouchคำสั่งของ Unix สิ่งนี้อาจไม่ใช่สิ่งที่คุณคาดหวัง) การใช้type NUL >> emptyfile.txtจะปลอดภัยกว่าในเรื่องนี้
eckes

ฉันไม่พบข้อมูลใด ๆCONนอกเหนือจากที่ลิงก์ในคำตอบนี้ ใครบางคนสามารถแบ่งปันการอ่านเบา ๆ ?
สินใจ

182
type NUL > EmptyFile.txt

หลังจากอ่านโพสต์ก่อนหน้านี้สองโพสต์การผสมผสานของทั้งสองนี้เป็นสิ่งที่ฉันมา ดูเหมือนว่าสะอาดกว่าเล็กน้อย ไม่จำเป็นต้องกังวลเกี่ยวกับการเปลี่ยนเส้นทาง "1 ไฟล์ที่คัดลอก" ข้อความถึงNULเหมือนโพสต์ก่อนหน้านี้และมันก็ดูดีถัดจากECHO OutputLineFromLoop >> Emptyfile.txtที่จะตามมาในไฟล์แบทช์


13
+1 นี่คือสิ่งที่เป็นธรรมชาติที่แรกที่นึกถึงไม่ใช่สิ่งประดิษฐ์ด้วย stderr เป็นต้น
Amit Naidu

2
คุณถูก. วิธีนี้หลีกเลี่ยงการธง / y ในคำสั่งคัดลอก
djangofan

สั้นและง่าย โซลูชันอื่น ๆ ไม่กี่ที่นี่ไม่ได้สร้างไฟล์ใหม่ของศูนย์ไบต์!
คริสเตียนเซนต์

66

เทคนิคที่ฉันรวบรวมจากคำตอบอื่น ๆ :

ทำให้ไฟล์ 0 ไบต์มีความชัดเจนและเข้ากันได้แบบย้อนหลัง:

type nul >EmptyFile.txt

แนวคิดผ่าน: ไม่ระบุชื่อ , Danny Backett , อาจเป็นอย่างอื่น, ฉันได้แรงบันดาลใจจากงานของ JdeBP

ไฟล์ 0 ไบต์เป็นอีกวิธีหนึ่งซึ่งสามารถมองย้อนกลับได้:

REM. >EmptyFile.txt

แนวคิดผ่าน: โยฮันเนส

ไฟล์ 0 ไบต์ที่ 3 มองย้อนกลับได้เหมือนกัน:

echo. 2>EmptyFile.txt

แนวคิดผ่าน: TheSmurf

ไฟล์ 0 ไบต์อย่างเป็นระบบ น่าจะใช้ได้ตั้งแต่ Windows 2000:

fsutil file createnew EmptyFile.txt 0

แนวคิดผ่าน: Emm

ไฟล์ 0 ไบต์เขียนทับไฟล์แบบอ่านอย่างเดียว

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

ไอเดียทาง: copyitright

บรรทัดใหม่เดี่ยว (2 ไบต์: 0x0D 0x0Aในรูปแบบเลขฐานสิบหกหรือเขียนเป็น\r\n):

echo.>AlmostEmptyFile.txt

หมายเหตุ: ไม่มีช่องว่างระหว่างecho, และ.>

แนวคิดทาง: คุณจะสะท้อนถึงบรรทัดใหม่ในไฟล์แบตช์ได้อย่างไร


แก้ไขดูเหมือนว่าคำสั่งที่ไม่ถูกต้องเปลี่ยนเส้นทางไปยังไฟล์จะสร้างไฟล์ว่าง เฮ้คุณสมบัติ! ความเข้ากันได้: uknown

TheInvisibleFeature <nul >EmptyFile.txt

ไฟล์ 0 ไบต์: คำสั่งไม่ถูกต้อง / ด้วยชื่อแบบสุ่ม (ความเข้ากันได้: uknown):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

ผ่าน: แหล่งข้อมูลที่ดีสำหรับการสุ่มโดย Hung Huynh

แก้ไข 2 Andriy M ชี้ให้เห็นถึงวิธีที่น่าขบขัน / กระตุ้นมากที่สุดเพื่อให้บรรลุสิ่งนี้ผ่านคำสั่งที่ไม่ถูกต้อง

ไฟล์ 0 ไบต์: คำสั่งไม่ถูกต้อง / วิธีขี้ขลาด (ความเข้ากันได้: ไม่ทราบ)

*>EmptyFile.txt

แนวคิดผ่าน: Andriy M

ไฟล์ 0 ไบต์มาทางที่ 4 :

break > file.txt

ความคิดผ่าน: foxidriveขอบคุณที่แสดงความคิดเห็นของดับเบิล Gras !


มันtype nul ...ไม่type <nul ...จริง
Andriy M

@AndriyM ขอบคุณคุณถูกฉันทำการแก้ไข! ไม่ได้สังเกตเพราะน่าสนใจเพียงพอที่จะทำงานผิดปกติได้ ซึ่งอาจหมายความว่าคำสั่งที่ไม่ถูกต้องเปลี่ยนเส้นทางไปยังชื่อไฟล์จะสร้างไฟล์ว่าง! ลองด้วยNonExistentCommand <nul >EmptyFile.txtและมันใช้ได้
n611x007

เนื่องจากมันจะไม่ปลอดภัยที่จะพึ่งพาชื่อคำสั่ง hardcoded โดยคาดว่าจะเป็น "ไม่ถูกต้อง" ฉันจึงเพิ่มตัวเลือกชื่อคำสั่งแบบสุ่ม
n611x007

2
ยังอีกอันหนึ่ง: break > file.txt, อุปกรณ์ประกอบฉากfoxidrive
Gras Double

3
และส่วนใหญ่ของคำสั่งที่สามารถใช้กับ>>ถ้าคุณจำเป็น "ต้องมีอยู่ แต่ไม่ควรถูกตัดทอนถ้าอยู่" (เช่น Unix touchไม่)
Eckes

25

REM > empty.file


ฉันติดอยู่ที่ Windows CE และนี่เป็นคำตอบเดียวที่สร้างและล้างไฟล์! วิธีการอื่น ๆ ทั้งเพิ่มบรรทัดหรือเปล่าก็ไม่ทำงาน ...
AntonyG

ปัญหาเดียวของการแก้ปัญหานี้คือหากมีไฟล์ชื่อ REM ในไดเรกทอรีปัจจุบันและคุณพิมพ์REM.cmd จะตอบกลับด้วย "'rem' ไม่รู้จักว่าเป็นคำสั่งภายในหรือภายนอก, โปรแกรมที่ทำงานได้หรือแบตช์ไฟล์ "
DodgyCodeException

@DodgyCodeException โดยใช้rem/แทนการrem.แก้ปัญหานั้น ...
35945

@aschipfl ขอบคุณที่น่าสนใจ เป็นที่น่าสนใจว่าคำตอบของปี 2010 มีความคิดเห็นอยู่ห่างกันเป็นเวลาหลายปี การสนทนา wwwww ช้า!
DodgyCodeException

8

หากมีความเป็นไปได้ที่ไฟล์ที่จะเขียนมีอยู่แล้วและอ่านได้อย่างเดียวให้ใช้รหัสต่อไปนี้:

ATTRIB -R filename.ext
CD .>filename.ext

หากไม่มีไฟล์อยู่ให้ทำ:

CD .>filename.ext

(ปรับปรุง / เปลี่ยนแปลงรหัสตามความคิดเห็นของ DodgyCodeException)

เพื่อกำจัดข้อผิดพลาดที่อาจเกิดขึ้น:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL

1
ปัญหาเดียวของวิธีนี้คือถ้ามีไฟล์ชื่อCD(ไม่มีนามสกุล) ในไดเรกทอรีปัจจุบันและคุณพิมพ์CD.cmd จะตอบกลับด้วย "'CD' ไม่รู้จักว่าเป็นคำสั่งภายในหรือภายนอก, โปรแกรมที่ทำงานได้หรือแบตช์ไฟล์ " หากคุณพิมพ์CD .(ด้วยช่องว่างหน้าจุด) แทนมันจะทำงาน
DodgyCodeException


7

อีกหนึ่งรายการที่จะเพิ่มในหนังสือ - สั้นและน่ารักสำหรับพิมพ์

break>file.txt
break>"file with spaces in name.txt"

ฉันเดาว่าเราจะไม่ข้ามคำพูด
Nam G VU

@NamGVU เครื่องหมายคำพูดจะถูกใช้ในชื่อไฟล์เป้าหมายหากคุณเลือกที่จะใช้องค์ประกอบชื่อไฟล์แบบยาวเช่นช่องว่างหรืออื่น ๆ พวกเขาไม่ได้เป็นส่วนหนึ่งของเนื้อหาไฟล์
foxidrive

ใช่ฉันเห็นด้วย ^^ สิทธิ์ในการอัปเดตของคุณตามที่กล่าวไว้
Nam G VU

@NamGVU สามารถใส่เครื่องหมายอัญประกาศที่มีหรือไม่มีชื่อไฟล์ยาวได้ ฉันเดาว่ามันพิมพ์จากบรรทัดคำสั่งด้วยชื่อไฟล์สั้น ๆ แล้วคุณไม่ต้องการพิมพ์ที่ไม่จำเป็น
foxidrive

ฉันขอแนะนำให้ลบบรรทัดที่สองออกจากคำตอบนี้ IMO นี่เป็นคำตอบที่ดีที่สุดสำหรับคำถามจนถึงตอนนี้ แต่บรรทัดที่สองไม่ได้เพิ่มคุณค่าจริงๆเว้นแต่บุคคลที่พยายามใช้จะไม่ทราบพื้นฐานของการจัดการพื้นที่สีขาวสำหรับบรรทัดคำสั่ง
kayleeFrye_onDeck


1

คุณยังสามารถใช้SETเพื่อสร้างbyteไฟล์null ได้ดังต่อไปนี้

set x=x > EmptyFile.txt

หรือถ้าคุณไม่ต้องการสร้างตัวแปรเพิ่มเติมกำหนดตัวแปรที่มีอยู่ใหม่เช่น

set PROMPT=%PROMPT% > EmptyFile.txt

หรือเช่นนี้

set "PROMPT=%PROMPT%" > EmptyFile.txt

0

มีวิธีการไม่สิ้นสุด

คำสั่งที่เอาท์พุทอะไร:

break
cls
color
goto
pushd
popd
prompt
title

คำสั่งแปลก:

CD.
REM.
@echo off
cmd /c
START >FILE

printคำสั่งที่ล้าสมัยสร้างไฟล์เปล่า:

print /d:EMPTY_TEXT_FILE nul

-2

วิธีที่ง่ายที่สุดคือ:

echo. > Filename.txt


8
สิ่งนี้จะสร้างไฟล์ที่มีอักขระเว้นวรรคตามด้วยอักขระขึ้นบรรทัดใหม่ตามด้วยอักขระขึ้นบรรทัดใหม่ไม่ใช่ไฟล์ว่าง
Andriy M

น่าดูคำตอบของฉัน (ด้านล่าง) เพราะมันเปลี่ยนการเข้ารหัส
Wolfpack'08

-3

สำคัญ:

หากคุณไม่ได้ตั้งค่าการเข้ารหัสซอฟต์แวร์จำนวนมากสามารถทำลายได้ git เป็นตัวอย่างที่นิยมมาก

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 นี่คือตัวพิมพ์เล็กและตัวพิมพ์ใหญ่บังคับใช้ utf8!


3
การเข้ารหัสเกี่ยวข้องกับการสร้างไฟล์เปล่าอย่างไร ไฟล์ null ไบต์ไม่จำเป็นต้องเข้ารหัสใด ๆ และมันเป็นเรื่องยุ่งยากที่จะทำเครื่องหมายกับ BOM A (0 bytes)
Jeb

@jeb เพราะผู้คนเติมไฟล์ที่ว่างเปล่าและเมื่อไฟล์ที่เติมเต็มถูกใช้เป็นไฟล์การตั้งค่าพวกเขาจะสร้างข้อผิดพลาดเมื่อไม่ใช่ UTF8 ในความเป็นจริงฉันจะบอกว่าคนมักจะเติมไฟล์และอย่าปล่อยให้มันว่างเปล่าและฉันจะไม่ใช้วิธีอื่นเพื่อสร้างไฟล์เปล่าที่ฉันตั้งใจจะดัดแปลงในภายหลังเพราะฉันเกือบจะต้องการแน่ใจว่าไฟล์ของฉัน คือ UTF8 ตัวอย่างเช่นการกวดวิชา. git บน github ขอให้ผู้ใช้ทำไฟล์เปล่าซึ่งถูกเติมในภายหลังและวิธีอื่นทำให้ไฟล์มีการเข้ารหัส Windows แปลก ๆ
Wolfpack'08
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.