在Windows机器上我收到此错误
'触摸'不被识别为内部或外部命令,可操作程序或批处理文件。
当我按照instructions执行操作时:
touch index.html app.js style.css
是否有相当于使用“触摸”的窗口?我是否需要手动创建这些文件(并修改它们以更改时间戳)以实现此类命令?这似乎不是......节点...... ...
答案 0 :(得分:185)
在cmd窗口中输入:
type nul > your_file.txt
这将在your_file.txt文件中创建0个字节。
另一种方法是使用echo命令:
echo.> your_file.txt
回声。 - 将创建一个空行中的文件。
于2019-04-01编辑:
如果您需要保留文件内容,请使用>>而不是>
> Creates a new file
>> Preserves content of the file
实施例
type nul >> your_file.txt
答案 1 :(得分:55)
Windows本身不包含touch
命令。
您可以使用任何可用的公共版本,也可以使用自己的版本。将此代码保存为touch.cmd
并将其放在路径中的某个位置
@echo off
setlocal enableextensions disabledelayedexpansion
(for %%a in (%*) do if exist "%%~a" (
pushd "%%~dpa" && ( copy /b "%%~nxa"+,, & popd )
) else (
type nul > "%%~fa"
)) >nul 2>&1
它将迭代它的参数列表,并且对于每个元素(如果存在),更新文件时间戳,否则,创建它。
答案 2 :(得分:26)
您可以使用此命令:ECHO>> FILENAME.TXT
它将在当前文件夹中创建一个具有给定扩展名的文件。
<强>更新强>
使用空文件:复制NUL filename.txt
答案 3 :(得分:18)
答案是错误的,只有在文件不存在时才有效。如果文件存在,则使用第一个不执行任何操作,第二个文件在文件末尾添加一行。
正确答案是:
copy /b filename.ext +,,
我在这里找到了它:https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
答案 4 :(得分:8)
在命令行中使用以下命令:
fsutil file createnew filename requiredSize
参数信息如下:
fsutil - 文件系统实用程序(您正在运行的可执行文件)
file - 触发文件操作
createnew - 要执行的操作(创建新文件)
filename - 字面意思是文件的名称
requiredSize - 将在创建的文件中以字节为单位分配文件大小
答案 5 :(得分:7)
我很惊讶这里有多少答案是错误。在文件中不回波将用ECHO is ON
之类的内容填充文件,而尝试将$nul
回显到文件中将实际上将$nul
放入文件中。此外,对于PowerShell,将$null
回显到文件中实际上不会生成0kb的文件,但是会被编码为UCS-2 LE BOM
的东西,如果需要确保文件没有字节,则可能会变得混乱顺序标记。
在测试完所有答案并引用了一些类似的答案之后,我可以保证它们将在每个控制台shell中起作用。只需将FileName.FileExtension
更改为您要touch
的文件的完整路径或相对路径:
if not exist FileName.FileExtension (fsutil file CreateNew FileName.FileExtension 0) else (copy /b FileName.FileExtension +,,)
这将创建一个新文件,命名为您放置的所有文件,而不是FileName.FileExtension
,文件的长度为0个字节。如果使用else
的复制操作已经存在,除了更新时间戳,它不会对该文件做任何事情,与touch
的工作方式相似,但可能并不完全相同。我想说这比1:1功能更能解决问题,但是我不知道有任何内置的CMD工具可以在不更改文件其他任何内容的情况下完成文件时间戳的更新。
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName
.FileExtension ).LastWriteTime = Get-Date}
它具有与CMD版本相同的功能。除了时间戳,它不会与现有文件混淆,并且它将创建一个全新的空文件,其中包含您决定使用的FileName.FileExtension
位置。是的,它将在控制台中作为一个单一的衬套工作;无需将其放置在PowerShell脚本文件中。
如果您不想修改现有文件的时间戳,我们可以删除else
子句。
if not exist FileName.FileExtension fsutil file CreateNew FileName.FileExtension 0
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
答案 6 :(得分:6)
您可以使用以下命令复制触摸功能:
$>>filename
这样做的目的是尝试执行一个名为$
的程序,但如果$
不存在(或者不是产生输出的可执行文件),则不会产生任何输出。它本质上是对功能的破解,但是您将收到以下错误消息:
'$'未被识别为内部或外部命令, 可操作程序或批处理文件。
如果您不想要错误消息,那么您可以执行以下两项操作之一:
type nul >> filename
或者:
$>>filename 2>nul
type
命令尝试显示nul的内容,它在读取时只返回EOF(文件结尾)。
2>nul
将错误输出(输出2)发送到nul(写入时忽略所有输入)。显然,2>nul
命令会使第二个命令(type
)变为冗余,因为它可以更快地输入。但至少你现在有了选择和知识。
答案 7 :(得分:5)
无需命令 - type
和echo
- 都无需在Windows Powershell终端中模拟Unix / Mac OS X的“touch”命令。只需使用以下简写:
$null > filename
这将在您当前位置创建一个名为“filename”的空文件。使用您可能需要的任何文件扩展名,例如'.txt文件'。
答案 8 :(得分:4)
在Windows 10的Visual Code Studio终端中,这是我创建新文件的工作:
type > hello.js
echo > orange.js
ni > peach.js
答案 9 :(得分:3)
在你的机器上安装 npm
在命令提示符下运行以下命令。
npm install touch-cli -g
现在你可以使用touch cmd了。
答案 10 :(得分:3)
如上所述
echo >> index.html
它可以是任何文件,带有任何扩展名 然后
notepad index.html
这将在记事本编辑器中打开文件
答案 11 :(得分:3)
您还可以在Windows命令窗口(cmd.exe)中使用copy con [filename]:
C:\copy con yourfile.txt [enter]
C:\CTRL + Z [enter] //hold CTRL key & press "Z" then press Enter key.
^Z
1 Files Copied.
这将在本地目录中创建一个名为yourfile.txt
的文件。
答案 12 :(得分:2)
在Windows Power Shell上,可以使用以下命令:
New-Item <filename.extension>
或
New-Item <filename.extension> -type file
注意:新项可以替换为其别名 ni
答案 13 :(得分:1)
假设文件存在,您只需要更新时间戳即可。
@import "~jquery-confirm/dist/jquery-confirm.min.css";
答案 14 :(得分:1)
Raghuveer在其answer中指出,ni
是New-Item
的PowerShell别名,因此您可以使用{{1 }},而不是触摸。
如果您更喜欢键入ni
而不是touch
,则可以为PowerShell ni
cmdlet设置touch
别名。
在Windows PowerShell中创建 touch 命令:
在PowerShell提示符下,定义新别名。
New-Item
现在,触摸命令的工作原理几乎与您期望的相同。唯一的区别是,您需要用逗号分隔文件列表。
Set-Alias -Name touch -Value New-Item
请注意,这仅设置PowerShell的别名。如果您不需要PowerShell,则可以设置WSL或对Windows使用bash。
不幸的是,一旦您结束PowerShell会话,别名将被忘记。要使别名永久化,您必须将其添加到PowerShell用户配置文件中。
在PowerShell提示符下:
touch index.html, app.js, style.css
将别名定义添加到个人资料并保存。
答案 15 :(得分:1)
对于非常简单的touch
版本(通常用于在当前目录中创建0字节文件),另一种方法是创建touch.bat
文件并将其添加到{{ 1}}或将其复制到%Path%
目录,如下所示:
touch.bat
C:\Windows\System32
创建单个文件
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'"
答案 16 :(得分:0)
如果您的PC中已安装Cygwin,则可以简单地使用提供的可执行文件进行 touch (也可以通过Windows命令提示符):
C:\cygwin64\bin\touch.exe <file_path>
答案 17 :(得分:0)
答案 18 :(得分:0)
简单,使用txt文件的示例
echo $null >> filename.txt
答案 19 :(得分:-1)