มี / dev / null บน Windows หรือไม่


คำตอบ:


487

ฉันคิดว่าคุณต้องการNULอย่างน้อยภายในพรอมต์คำสั่งหรือแบทช์ไฟล์

ตัวอย่างเช่น:

type c:\autoexec.bat > NUL

ไม่ได้สร้างไฟล์

(ฉันเชื่อว่าสิ่งเดียวกันนี้เป็นจริงถ้าคุณพยายามสร้างไฟล์โดยทางโปรแกรม แต่ฉันไม่ได้ลองเลย)

ใน PowerShell คุณต้องการ$null:

echo 1 > $null

20
@capthive: มีความแตกต่างระหว่าง /dev/null.txt และ /dev/null/foo.txt
Jon Skeet

2
ฉันแค่ดูที่นี่อีกครั้งและถอนคำสั่งเดิมของฉัน ฉันกำลังเขียนโค้ดและข้อผิดพลาดก็ถูกกลืนลงไป ฉันกำลังลบมันดังนั้นจึงไม่มีใครคิดว่าเป็นความจริง
Jim Hunziker

3
สำหรับผู้ที่กำลังมองหาไฟล์ "พิเศษ" ของ Unix ใน Windows: ที่นี่มี/dev/randomและ/dev/zeroไดรเวอร์อุปกรณ์สำหรับ Win32
ulidtko

9
@CoDEmanX: นั่นไม่ใช่ประสบการณ์ของฉัน การเขียนไปยังคอนโซล - หรือแม้กระทั่งไฟล์ - อาจใช้เวลาอย่างมาก ฉันเพิ่งทดสอบกับโปรแกรมที่เขียนว่า "สวัสดีที่นั่น" เพื่อ stdout 10,000,000 ครั้ง การเปลี่ยนเส้นทางไปยังไฟล์ (บน SSD) ใช้เวลา 18 วินาที การเปลี่ยนเส้นทางไปยัง NUL ใช้เวลา 4 วินาที การไม่เปลี่ยนเส้นทางเลยทำให้ฉันหมดความอดทนหลังจากผ่านไปไม่นาน ...
Jon Skeet

2
ฉันได้เรียนรู้กลับมาในครั้ง Win95 ที่คุณควรจะเขียนลำไส้ใหญ่หลังจากชื่ออุปกรณ์พิเศษเพื่อให้NUL:(และCON:, PRN:... ) ส่วนใหญ่จะเป็นเรื่องของรูปแบบและแสดงให้เห็นอย่างชัดเจนว่าเป็นวัตถุที่พิเศษและไม่ได้ไฟล์ที่เรียกว่าNUL: NULนอกจากนี้ยังเป็นไปได้ด้วย API พิเศษในการสร้างไฟล์ที่เรียกว่าNUL(ดูคำตอบข้อใดข้อหนึ่ง) ฉันฝันว่าบางทีวันหนึ่งถ้าทุกคนใช้เครื่องหมายจุดคู่โดยการประชุมเราจะสามารถคัดค้านชื่ออุปกรณ์พิเศษที่หวั่น :-)
jdm

65

ตามข้อความนี้ในรายการส่งจดหมายของ GCCคุณสามารถใช้ไฟล์ "nul" แทน / dev / null:

#include <stdio.h>

int main ()
{
    FILE* outfile = fopen ("/dev/null", "w");
    if (outfile == NULL)
    {
        fputs ("could not open '/dev/null'", stderr);
    }
    outfile = fopen ("nul", "w");
    if (outfile == NULL)
    {
        fputs ("could not open 'nul'", stderr);
    }

    return 0;
}

(เครดิตสำหรับDannyสำหรับรหัสนี้คัดลอกมาจากข้อความของเขา)

นอกจากนี้คุณยังสามารถใช้ไฟล์ "nul" พิเศษผ่านการเปลี่ยนเส้นทาง


1
อ่าดังนั้นนี่จะอธิบายว่าทำไมถ้าคุณสร้างC:\devไดเรกทอรีใน Windows และคุณใช้โปรแกรมอรรถประโยชน์ของ GNU จำนวนมากในที่สุดคุณจะได้รับไฟล์ลึกลับที่ชื่อว่า null ในไดเรกทอรีนั้น
Klitos Kyriacou

50

NULใน Windows ดูเหมือนจะเป็นเส้นทางเสมือนจริงในโฟลเดอร์ใด ๆ เช่นเดียวกับ.., .ในระบบแฟ้มใด ๆ

ใช้โฟลเดอร์ใด ๆ ตามด้วย NUL จะทำงาน

ตัวอย่าง,

echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul

มีผลเช่นเดียว/dev/nullกับบน Linux

นี่คือการทดสอบบน Windows 7, 64 บิต


7
เยี่ยมมากมันเป็นไปไม่ได้ที่จะสร้างไฟล์ชื่อ "nul" บน Windows 7 64 บิต :)
34432 David Ferenczy Rogožan

7
@DawidFerenczy เป็นไปได้แม้ว่าจะไม่ได้อยู่ในความคลาสสิค เช่นmd \\.\c:\nul quora.com/… , gohacking.com/how-to-create-con-folder-in-windows , superuser.com/questions/86999/…
phuclv

1
บน Windows 10 ใน bash ไฟล์แรกสร้างไฟล์nul
DrumM

พ่น IOException โดยใช้ java ใน win10 เพียงแค่ต้องลองมัน หวังว่าจะไม่มีข้อยกเว้น / ข้อผิดพลาดเหมือน / dev / null
MDuh

34

Jon Skeet ถูกต้อง นี่คือหน้าNul Device Driverในเอกสาร Windows Embedded (ฉันไม่รู้ว่าทำไมจึงไม่ใช่ที่อื่น ... )

นี่คืออีก:


69
แน่นอน Jon Skeet ถูกต้อง ขอขอบคุณสำหรับการระบุความจริงที่เห็นได้ชัดและสากล :)
อาร์มาตินเฟอร์นันเด

1
2 ลิงก์ที่นี่เสียหายแล้ว :(
Michael Foukarakis

9

NULทำงานตามโปรแกรมเช่นกัน เช่น:

freopen("NUL", "w", stderr);

ทำงานตามที่คาดไว้โดยไม่ต้องสร้างไฟล์ (MSVC ++ 12.0)


1
มีหลายครั้งที่คำถามต้องตอบด้วยNULและมันผ่านมาถึงจุดนั้นเมื่อ 5 ปีก่อน
miken32

6
ฉันคิดว่าคำตอบนี้เพิ่มการมีส่วนร่วมที่ถูกต้องให้กับการสนทนา
Jeroen

3

หากคุณต้องการดำเนินการใน Microsoft Windows เทียบเท่า symlink ไปยัง/dev/nullใน Linux คุณจะเปิดและผู้ดูแลระบบcmdและประเภท:

สำหรับไฟล์:

mklink c:\path\to\file.ext NUL:

หรือสำหรับไดเรกทอรี:

mklink /D c:\path\to\dir NUL:

นี่จะทำให้ไฟล์ / direcotry เสมอที่ 0 ไบต์และยังคงกลับสู่ความสำเร็จทุกครั้งที่เขียน


-1

คุณต้องใช้startและ$ NULสำหรับสิ่งนี้ในWindows PowerShell :

พิมพ์คำสั่งนี้โดยสมมติว่าmySumเป็นชื่อแอปพลิเคชันของคุณและ5 10เป็นอาร์กิวเมนต์บรรทัดคำสั่งที่คุณกำลังส่ง

start .\mySum  5 10 > $NUL 2>&1

คำสั่งจะเริ่มต้นกระบวนการเดี่ยวผลคล้ายกับstart ป้องกันตัวเลือกเริ่มต้นจากการเปิดหน้าต่าง terminal ใหม่หากโปรแกรมที่คุณกำลังทำงานเป็นโปรแกรมประยุกต์ที่คอนโซล และเทียบเท่าของ Windows ของ ในตอนท้ายจะเปลี่ยนเส้นทาง stderr ที่ stdout ซึ่งทั้งหมดจะไป&/BNUL/dev/null2>&1NUL


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