在DOS/Windows命令行中如何创建一个空文件?
我尝试了:
我尝试了:
copy nul > file.txt
但它始终显示已复制某个文件。
标准cmd中是否有另一种方法?
应该有一种不需要来自Cygwin或任何其他非标准命令的touch命令的方法。 该命令需要从脚本运行,因此不能使用按键。
copy nul > file.txt
但它始终显示已复制某个文件。
标准cmd中是否有另一种方法?
应该有一种不需要来自Cygwin或任何其他非标准命令的touch命令的方法。 该命令需要从脚本运行,因此不能使用按键。
没有重定向,Luc Vu或Erik 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
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
>
只会重定向stdout,其中没有产生任何输出。NUL
:.>out.txt 2>NUL
(原始答案,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
不同的是,这个“重定向位”(<nul...
技巧)可以用来输出没有任何CR的行:<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt
dir
命令应该将文件大小显示为 11 个字节:“helloworld!
”。
echo.>filename
,因为它会包括空格和换行符。 - Agent_9191rem
命令可以避免创建一个空行文件。 - Greg Hewgill.>out.txt
只会出现错误“'.'不被识别为内部或外部命令,” - barlop>
仅将 stdout 重定向到 out.txt
。因此创建了一个空文件。在这种情况下,您可以忽略错误消息。 - VonC试试这个:
type NUL > 1.txt
这一定会创建一个空文件。
这是另一种方式:
cd . > filename
cd . > 文件名.扩展名
,意思是 cd
和 .
之间需要有一个空格。 - AIon如果你真的想要一个完全空的文件,而不产生任何输出到标准输出(stdout),你可以稍微作弊一下:
copy nul file.txt > nul
只需将标准输出重定向到 nul,这样从 copy
命令输出的内容就会消失。
打开文件:
type file.txt
新建文件:
type nul > file.txt
echo 这是一个样本文本文件 > sample.txt
notepad myfile.txt
<按下 Enter>编辑内容:
notepad file.txt
复制
copy file1.txt file1Copy.txt
改名
rename file1.txt file1_rename.txt
删除文件:
del file.txt
call>file.txt
这是我知道的最清洁的方法。
ZZ
代替call
吗(虽然这并不比较晦涩)?- 就像Nomad的答案。 - Peter Mortensencall && echo test
或call || echo test
来测试。and/or基于前一个命令的错误级别。此外,你引用的答案建议这是更好的解决方案,实际上非常危险。正如其他人在那个答案的评论中已经指出的那样,依赖不存在的命令是可怕的,因为如果它存在,你刚刚运行了它而不知道它做了什么,可能具有比应该有的更多权限。 - cureecho "" > filename
我相信这在Windows / DOS上可以工作,但我的最后一次实际操作是相当久以前的事了。 我确切地知道它适用于基本上任何符合POSIX标准的操作系统。
在Windows命令行中,一种方法是使用fsutil:
fsutil file createnew <filename> <size>
一个例子:
fsutil file createnew myEmptyFile.txt 0
以下内容适用于*nix命令行。
touch filename
这个命令可以更改文件的修改日期,如果文件不存在则创建该文件。
> 文件名
,它也可以用于截断现有文件。 - Frank Farmerfsutil
需要管理员权限,仅仅为了创建一个空文件这有些过分了... - Joeytype nul > (file_name).(file_type)
例如,如果你想创建一个文本文件,那么type nul > demo.txt
如果你想要创建一个 JavaScript 文件,那么
type nul > demo.js
你可以编写自己的触摸功能。
//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;
}