当前位置 : 首页 » 互动问答 » 正文

How to create empty text file from a batch file?

分类 : 互动问答 | 发布时间 : 2008-10-17 04:38:18 | 评论 : 11 | 浏览 : 484374 | 喜欢 : 210

Can somebody remember what was the command to create an empty file in MSDOS using BAT file?

回答(11)

  • 1楼
  • copy NUL EmptyFile.txt

    DOS has a few special files (devices, actually) that exist in every directory, NUL being the equivalent of UNIX's /dev/null: it's a magic file that's always empty and throws away anything you write to it. Here's a list of some others; CON is occasionally useful as well.

    To avoid having any output at all, you can use

    copy /y NUL EmptyFile.txt >NUL

    /y prevents copy from asking a question you can't see when output goes to NUL.

  • 2楼
  • echo. 2>EmptyFile.txt
    
  • 3楼
  • type NUL > EmptyFile.txt
    

    After reading the previous two posts, this blend of the two is what I came up with. It seems a little cleaner. There is no need to worry about redirecting the "1 file(s) copied." message to NUL, like the previous post does, and it looks nice next to the ECHO OutputLineFromLoop >> Emptyfile.txt that will usually follow in a batch file.

  • 4楼
  • Techniques I gathered from other answers:

    Makes a 0 byte file a very clear, backward-compatible way:

    type nul >EmptyFile.txt
    

    idea via: anonymous, Danny Backett, possibly others, myself inspired by JdeBP's work

    A 0 byte file another way, it's backward-compatible-looking:

    REM. >EmptyFile.txt
    

    idea via: Johannes

    A 0 byte file 3rd way backward-compatible-looking, too:

    echo. 2>EmptyFile.txt
    

    idea via: TheSmurf

    A 0 byte file the systematic way probably available since Windows 2000:

    fsutil file createnew EmptyFile.txt 0
    

    idea via: Emm

    A 0 bytes file overwriting readonly files

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

    idea via: copyitright

    A single newline (2 bytes: 0x0D 0x0A in hex notation, alternatively written as \r\n):

    echo.>AlmostEmptyFile.txt
    

    Note: no space between echo, . and >.

    idea via: How can you echo a newline in batch files?


    edit It seems that any invalid command redirected to a file would create an empty file. heh, a feature! compatibility: uknown

    TheInvisibleFeature <nul >EmptyFile.txt
    

    A 0 bytes file: invalid command/ with a random name (compatibility: uknown):

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

    via: great source for random by Hung Huynh

    edit 2 Andriy M points out the probably most amusing/provoking way to achieve this via invalid command

    A 0 bytes file: invalid command/ the funky way (compatibility: unknown)

    *>EmptyFile.txt
    

    idea via: Andriy M

    A 0 bytes file 4th-coming way:

    break > file.txt
    

    idea via: foxidrive thanks to comment of Double Gras!

  • 5楼
  • REM. > empty.file

  • 6楼
  • If there's a possibility that the to be written file already exists and is read only, use the following code:

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

    If no file exists, simply do:

    CD .>filename.ext
    

    (updated/changed code according to DodgyCodeException's comment)

    To supress any errors that may arise:

    ATTRIB -R filename.ext>NUL
    (CD .>filename.ext)2>NUL
    
  • 7楼
  • fsutil file createnew file.cmd 0
    
  • 8楼
  • One more to add to the books - short and sweet to type.

    break>file.txt
    break>"file with spaces in name.txt"
    
  • 9楼
  • You can use a TYPE command instead of COPY. Try this:

    TYPE File1.txt>File2.txt
    

    Where File1.txt is empty.

  • 10楼
  • You can also use SET to create a null byte file as follows

    set x=x > EmptyFile.txt
    

    Or if you don't want to create an extra variable reassign an existing variable like

    set PROMPT=%PROMPT% > EmptyFile.txt
    

    or like this:

    set "PROMPT=%PROMPT%" > EmptyFile.txt
    
  • 11楼
  • The easiest way is:

    echo. > Filename.txt

相关阅读:

Get Date in YYYYMMDD format in windows batch file

How to copy a folder from remote to local using scp?

How to sleep for 5 seconds in Windows's Command Prompt? (or DOS)

How to sleep for 5 seconds in Windows's Command Prompt? (or DOS)

How to set a variable to the output of a command in Bash?

How do I get current datetime on the Windows command line, in a suitable format for using in a filename?

How do I get current datetime on the Windows command line, in a suitable format for using in a filename?

Adding directory to PATH Environment Variable in Windows

How do I parse command line arguments in Bash?

Batch file to delete files older than N days