如何在DOS / Windows命令行中创建一个空文件?
我试过了:
copy nul > file.txt
但它始终显示文件已被复制。
标准cmd中还有其他方法吗?
它应该是一个不需要Cygwin的touch命令或任何其他非标准命令的方法。该命令需要从脚本运行,因此无法使用击键。
没有重定向,Luc Vu或Erik Konstantopoulos point out:
copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt
“How to create empty text file from a batch file?”(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
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
同样的精神,Samuel建议in the comments:
我使用的最短的基本上是Nomad的那个:
.>out.txt
它确实给出了一个错误:
'.' is not recognized as an internal or external command
但这个错误在stderr上。而>
只重定向stdout,没有产生任何东西。
因此创建了一个空文件。这里可以忽略错误消息。
(原始答案,2009年11月)
echo.>filename
(echo ""
实际上会把“”放在文件中!而没有'。'的echo
会把“Command ECHO activated
”放在文件中......)
注意:生成的文件不为空,但包含一个返回行序列:2个字节。
这个discussion指向真正的空文件的批处理解决方案:
<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's answer中提到并且还产生一个0字节长度的文件)的区别在于,这个“重定向位”(<nul...
技巧)可用于回送没有任何CR的行:
<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt
dir命令应将文件大小指示为12个字节:“
hello world!
”。
cd > filename.cfg
在C:/ Program Files中创建文件时,您无法直接创建文件。
copy con SomeFile.txt输入
Ctrl-Z输入
试试这个:abc > myFile.txt
首先,它将在当前工作目录中创建一个名为myFile.txt
的文件(在命令提示符下)。然后它将运行命令abc
,这不是一个有效的命令。通过这种方式,您获得了一个名为myFile.txt
的新空文件。
另一种创建零字节文件的方法:
break > "file.txt"
在命令提示符中使用copy > your_file_name.extension
P:\excecise> copy > Sample.txt
你也可以使用:
echo. 2>foo
echo.
的调试输出几乎肯定是空的。
type nul>filename
将创建一个新的空文件。
更新:copy nul filename
也可以无需重定向(更明显的解决方案)。
所以你可以创建一个空文件
'' > newfile.txt
导航到该目录并在PowerShell窗口中键入以上命令。
请注意,这不适用于Windows命令提示符。
您可以使用旧命令
copy con file_name.ext
不要输入任何内容,只需按F6保存即可,但是会打印“文件已复制”,但是当你打开文件时它会被清空
这对我有用,
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命令,也会在目录中创建文件。
试试这个:
type NUL > 1.txt
这肯定会创建一个空文件。
我阅读了许多线程,但这不是最短的方式。
请使用命令:
>copy /b NUL empty_file.txt
在Windows上我尝试这样做
echo off > fff1.txt
它创建了一个名为fff1.txt的文件,文件大小为0kb
我没有找到除此之外的任何可能创建空文件的命令。
注意:您必须位于要创建文件的目录中。
另一种方式:
copy nul 2>empty_file.txt
只是我在Windows中尝试过
copy con file.txt
然后按Enter键,然后按Ctrl + Z Enter
它对我有用。
对于Ubuntu,我通常使用VI命令创建一个文件
vi file.txt
它将打开文件然后按ESC键然后键入:wp然后按Enter键。它将创建一个包含空数据的新文件。
echo '' > %1
的bat文件。 (将文件命名为touch.bat)touch temp.txt
创建temp.txt文件)查看this文章了解更多信息。
要创建任何类型的文件,您可以使用以下代码
type nul>(file_name)。(file_type)
例如。如果要创建文本文件
输入nul> demo.txt
如果你想创建一个javascript文件
null type> demo.js
今天我发现了一个新的:)
这将更改命令行窗口标题,但也会创建一个空文件。
title > file.txt
以管理员模式运行CMD并键入:
NUL > file_name.extention
或者你输入这个
echo .> file_name.extention
这是另一种方式:
rem/ > file.ext
斜线/
是强制性的;没有它,重定向部分被rem
注释掉了。
这是另一种方式:
cd. > filename
首先创建您的文件,使其存在:
echo . > myfile.txt
然后使用copy
命令用空版本覆盖创建的文件:
copy /y nul myfile.txt
如果你真的想要一个完全空的文件,没有任何输出到stdout,你可以作弊:
copy nul file.txt > nul
只需将stdout重定向到nul,副本的输出就会消失。
打开文件 :
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
阅读我的帖子上的评论,我不得不承认我没有正确地阅读这个问题。
在Windows命令行中,一种方法是使用fsutil:
fsutil file createnew <filename> <size>
一个例子:
fsutil file createnew myEmptyFile.txt 0
以下是* nix命令行。
touch filename
此命令会更改文件的修改日期,或者在找不到文件时创建它。
echo "" > filename
我相信这适用于Windows / DOS,但我最近的实践经验是很久以前的。我确实知道它基本上适用于任何符合POSIX的操作系统。
call>file.txt
这是我所知道的最干净的方式。
你可以自己动手。
//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;
}