在windows中的命令行上创建一个空文件(如linux touch命令)
在windows计算机上,我遇到此错误 “触摸”不被识别为内部或外部命令、可操作程序或批处理文件 我遵循了这些似乎是linux特有的命令,但在标准windows命令行上,它不是这样工作的:在windows中的命令行上创建一个空文件(如linux touch命令),windows,batch-file,cmd,command-line,Windows,Batch File,Cmd,Command Line,在windows计算机上,我遇到此错误 “触摸”不被识别为内部或外部命令、可操作程序或批处理文件 我遵循了这些似乎是linux特有的命令,但在标准windows命令行上,它不是这样工作的: touch index.html app.js style.css 在linux/mac os/unix世界中,是否存在与“touch”命令相当的windows命令?我是否需要手动创建这些文件(并修改它们以更改时间戳)以实现此类命令?我正在使用node,这似乎不太。。。node ish…在命令行上使用以下命
touch index.html app.js style.css
在linux/mac os/unix世界中,是否存在与“touch”命令相当的windows命令?我是否需要手动创建这些文件(并修改它们以更改时间戳)以实现此类命令?我正在使用node,这似乎不太。。。node ish…在命令行上使用以下命令:
fsutil file createnew filename requiredSize
参数信息如下所示:
fsutil-文件系统实用程序(正在运行的可执行文件)
文件-触发文件操作
createnew—要执行的操作(创建新文件)
filename-将是文件的字面名称
requiredSize-将在创建的文件中分配以字节为单位的文件大小Windows本机不包含
touch
命令
您可以使用任何可用的公共版本,也可以使用自己的版本。将此代码另存为touch.cmd
,并将其放置在路径中的某个位置
@echo关闭
setlocal enableextensions disabledelayedexpansion
(对于(%*)中的%%a,如果存在请执行“%%~a”(
pushd“%%~dpa”&&(复制/b“%%~nxa”+,,&popd)
)否则(
键入nul>“%%~fa”
))>数字2>&1
它将在参数列表中迭代,如果每个元素存在,则更新文件时间戳,否则创建它。您可以使用以下命令:ECHO>>filename.txt 它将在当前文件夹中创建具有给定扩展名的文件 更新:
对于空文件,请使用:copy NUL filename.txt替换windows命令行(如cmd)上的touch命令的简单方法是:
type nul > your_file.txt
@echo off
powershell New-Item %* -ItemType file
这将在your_file.txt
文件中创建0个字节
这也是在windows批处理文件中使用的一个很好的解决方案
另一种方法是使用以下命令:
回声将创建一个包含一个空行的文件
如果需要保留文件内容,请使用
>
而不是>
> Creates a new file
>> Preserves content of the file
范例
type nul >> your_file.txt
您也可以使用命令 从另一个批处理程序调用一个批处理程序,而不停止父批处理程序。call命令接受标签作为调用的目标 例如:
call >> your_file.txt
也可以在Windows命令窗口(cmd.exe)中使用:
这将在本地目录中创建一个名为
yourfile.txt
的文件。在Windows Powershell终端中模拟Unix/Mac OS X的“touch”命令时,无需使用任何命令(无论是type
还是echo
)。只需使用以下速记:
$null > filename
这将在当前位置创建一个名为“filename”的空文件。使用您可能需要的任何文件扩展名,例如“.txt”
来源:(参见备注)您可以使用以下命令复制touch的功能:
$>>filename
这样做的目的是尝试执行一个名为$
的程序,但如果$
不存在(或不是生成输出的可执行文件),则它不会生成任何输出。这本质上是对该功能的攻击,但您将收到以下错误消息:
“$”未被识别为内部或外部命令,
可操作的程序或批处理文件
如果您不想看到错误消息,则可以执行以下两种操作之一:
type nul >> filename
或:
type
命令尝试显示nul的内容,该命令在读取时只返回EOF(文件结束)
2>nul
向nul发送错误输出(输出2)(写入时忽略所有输入)。显然,第二个命令(使用2>nul
)被type
命令冗余,因为它打字更快。但至少你现在有了选择和知识。简单,例如txt文件
echo $null >> filename.txt
答案是错误的,它只在文件不存在时才起作用。如果文件存在,则使用第一个文件不会执行任何操作,第二个文件会在文件末尾添加一行 正确答案是:
copy /b filename.ext +,,
我在这里找到它:是的,你可以使用Node进行触摸,我只是使用了它,它在windows Cmd或gitbash中运行良好 如前所述
echo >> index.html
它可以是任何文件,具有任何扩展名
那就做吧
这将在windows Power Shell上的记事本编辑器中打开文件,您可以使用以下命令:
New-Item <filename.extension>
新项目
或
新项目-类型文件
注:新项目可替换为其别名ni
我很惊讶这里有多少答案是错的。不向文件中回显任何内容都会在文件中填充类似“ECHO is ON”的内容,而尝试将
$nul
回显到文件中会将$nul
放入文件中。此外,对于PowerShell,将$null
回显到文件中实际上不会生成一个0kb的文件,而是编码为UCS-2 LE BOM
的文件,如果您需要确保文件没有字节顺序标记,这可能会变得混乱
在测试了这里的所有答案并参考了一些类似的答案之后,我可以保证这些答案在每个控制台shell中都能正常工作。只需将FileName.FileExtension
更改为要触摸的文件的完整路径或相对路径;感谢提供的复制NUL文件.EXT
更新:
CMD w/时间戳更新
copy num FileName.FileExtension
这将创建一个名为which的新文件,而不是大小为0字节的FileName.FileExtension
。如果文件已经存在,它将基本上复制自己以更新时间戳。我想说这是一个比1:1的触摸功能更有效的解决方法,但我不同意
echo >> index.html
notepad index.html
New-Item <filename.extension>
New-Item <filename.extension> -type file
C:\cygwin64\bin\touch.exe <file_path>
type test.c > test.c.bkp && type test.c.bkp > test.c && del test.c.bkp
type > hello.js
echo > orange.js
ni > peach.js
Set-Alias -Name touch -Value New-Item
touch index.html, app.js, style.css
notepad $profile
@echo off
powershell New-Item %* -ItemType file
C:\Users\YourName\Desktop>touch a.txt
Directory: C:\Users\YourName\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020-10-14 10:28 PM 0 a.txt
C:\Users\YourName\Desktop>touch "b.txt,c.txt"
Directory: C:\Users\YourName\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020-10-14 10:52 PM 0 b.txt
-a---- 2020-10-14 10:52 PM 0 c.txt
New-Item : The file 'C:\Users\YourName\Desktop\a.txt' already exists.
C:\Users\YourName\Desktop>touch d.txt,e.txt,f.txt
C:\Users\YourName\Desktop>touch "g.txt, 'name with spaces.txt'"
npm install touch-cli -g