在Windows机器上,我收到此错误
“触摸”不被识别为内部或外部命令,可操作程序或批处理文件。
当我按照说明进行操作时:
touch index.html app.js style.css
是否有一个等同于使用“触摸”的窗户?我是否需要手动创建这些文件(并修改它们以更改时间戳)才能实现这种命令?似乎不太...节点式...
在Windows机器上,我收到此错误
“触摸”不被识别为内部或外部命令,可操作程序或批处理文件。
当我按照说明进行操作时:
touch index.html app.js style.css
是否有一个等同于使用“触摸”的窗户?我是否需要手动创建这些文件(并修改它们以更改时间戳)才能实现这种命令?似乎不太...节点式...
Answers:
在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
于2020-04-07编辑
您也可以使用呼叫命令。
在不停止父批处理程序的情况下从另一个调用一个批处理程序。call命令接受标签作为呼叫目标。
例:
call >> your_file.txt
access denied
在控制台中看到。第二个选项很好用!
>>
第一个不执行任何操作,第二个在文件末尾添加一行。正确的答案是superuser.com/questions/10426/…–
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
它将遍历它的参数列表,并为每个元素(如果存在)更新文件时间戳,否则创建它。
您可以使用以下命令:ECHO >> filename.txt
它将在当前文件夹中创建一个具有给定扩展名的文件。
更新:
对于空文件,请使用:复制NUL filename.txt
type NUL > filename
(创建一个0字节的文件)
type NUL >> filename
答案是错误的,它仅在文件不存在时才起作用。如果文件存在,则使用第一个不执行任何操作,第二个在文件末尾添加一行。
正确答案是:
copy /b filename.ext +,,
我在这里找到了它:https : //superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
我很惊讶这里有多少答案是错误的。在文件中不回显任何内容都会使文件充满ECHO is ON
,而试图回显$nul
到文件中则会在字面上放置$nul
文件。此外,对于PowerShell,回显$null
到文件实际上不会生成0kb的文件,但是UCS-2 LE BOM
如果编码为,则如果您需要确保文件没有字节序标记,则可能会变得凌乱。
在测试完所有答案并引用了一些类似的答案之后,我可以保证每个控制台外壳程序都可以使用这些答案。只需更改FileName.FileExtension
为您想要的文件的完整路径或相对路径即可touch
;感谢Keith Russell的COPY NUL FILE.EXT
更新:
copy NUL FileName.FileExtension
这将创建一个新文件,命名为您放置的文件,而不是FileName.FileExtension
大小为0字节的文件。如果文件已经存在,它将基本上就地复制自身以更新时间戳。我想说的是,此功能比1:1功能更能解决问题,touch
但我不知道有任何用于CMD的内置工具可以在不更改文件其他任何内容的情况下完成文件时间戳的更新。
if not exist FileName.FileExtension copy NUL FileName.FileExtension
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
是的,它将在单一控制台中在控制台上工作;无需将其放置在PowerShell脚本文件中。
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
fsutil file CreateNew FileName.FileExtension 0
来改进它copy NUL Filename.FileExtension
,因为后者更短并且执行相同的操作。
copy
,fsutil
但是已经有一段时间了fsutil
。我会尝试找出原因...
在命令行上使用以下命令:
fsutil file createnew filename requiredSize
参数信息如下:
fsutil-文件系统实用程序(您正在运行的可执行文件)
文件-触发文件操作
createnew-要执行的操作(创建新文件)
文件名-实际上是文件名
requiredSize-将在创建的文件中分配文件大小(以字节为单位)
NULL
有用... 虽然requiredSize事情很奇怪...该命令只是用数千个s 填充了您的新文件...很奇怪...所以只使用0 ...如果跳过requiredSize会产生错误。 。
在Windows Power Shell上,可以使用以下命令:
New-Item <filename.extension>
要么
New-Item <filename.extension> -type file
注意:New-Item可以用别名ni替换
'New-Item' is not recognized as an internal or external command
您可以使用以下命令复制touch的功能:
$>>filename
它的作用是尝试执行一个名为的程序$
,但是如果该程序$
不存在(或不是产生输出的可执行文件),则不会产生输出。从本质上讲,它是对该功能的一种入侵,但是您将收到以下错误消息:
无法将“ $”识别为内部或外部命令,可操作程序或批处理文件。
如果您不希望出现错误信息,则可以执行以下两项操作之一:
type nul >> filename
要么:
$>>filename 2>nul
该type
命令尝试显示nul的内容,该内容不执行任何操作,但在读取时返回EOF(文件结尾)。
2>nul
将错误输出(输出2)发送到nul(在写入时忽略所有输入)。显然,第二个命令(带有2>nul
)使type
键入变得多余,因为它可以更快地键入。但是至少您现在有了选择和知识。
%ERRORLEVEL%
始终设置为非零。您可以通过添加noop来解决该问题|| cd.
,但这总是将错误设置为0,如果“触摸”失败,则可能不是您想要的。
在Windows Powershell终端中仿真Unix / Mac OS X的“ touch”命令不需要命令,type
也不echo
需要。只需使用以下速记:
$null > filename
这将在您当前的位置创建一个名为“文件名”的空文件。使用您可能需要的任何文件扩展名,例如“ .txt”。
来源:https : //superuser.com/questions/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell(请参阅评论)
echo
$null > filename
将空输出发送到文件名(如果您发现我的意思)。
echo
在所需的标准命令行终端(cmd)中echo
。对困惑感到抱歉。
您还可以在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
在本地目录中命名的文件。
假设文件存在并且您只需要更新时间戳。
type test.c > test.c.bkp && type test.c.bkp > test.c && del test.c.bkp
[cmd]
,这意味着OP希望为CMD开箱即用地提供答案,这意味着没有默认Windows安装中未附带的命令行实用程序。这实际上将排除所有脚本语言,甚至不包括内置Windows脚本语言,例如CScript,WScript和PowerShell。关键不是它可以在CMD env中工作,而是对有权访问CMD的任何人(包括权限问题)都是可行的。
touch
。这里的其他讨论:superuser.com/questions/10426/…和Cygwin库是Windows上Unix命令的通用工具集。