En una máquina con Windows me sale este error
'touch' no se reconoce como un comando interno o externo, programa operativo o archivo por lotes.
cuando sigo las instrucciones para hacer:
touch index.html app.js style.css
¿Existe un equivalente de Windows para usar 'touch'? ¿Necesito crear estos archivos a mano (y modificarlos para cambiar la marca de tiempo) para implementar este tipo de comando? Eso no parece muy ... nodo-ish ...
touch
. Otra discusión aquí: superuser.com/questions/10426/… y la biblioteca Cygwin es un conjunto de herramientas común de comandos de Unix en Windows.touch
para crear un archivo vacío con PowerShell?Respuestas:
en cmd tipo de ventana:
Esto creará 0 bytes en su archivo_archivo.txt.
Otra forma de hacerlo es mediante el comando echo :
eco. - creará un archivo con una línea vacía en él.
Editado el 2019-04-01:
Si necesita preservar el contenido del archivo, use >> en lugar de>
Ejemplo
Editado el 2020-04-07
También puede usar el comando de llamada .
Ejemplo:
fuente
access denied
en la consola. ¡La segunda opción funciona bien!>>
el primero no hace nada, el segundo agrega una línea al final del archivo. La respuesta correcta es superuser.com/questions/10426/...Windows no incluye de forma nativa un
touch
comando.Puede usar cualquiera de las versiones públicas disponibles o puede usar su propia versión. Guarde este código como
touch.cmd
y colóquelo en algún lugar de su caminoIterará sobre la lista de argumentos, y para cada elemento si existe, actualice la marca de tiempo del archivo, de lo contrario, créelo.
fuente
Puede usar este comando: ECHO >> filename.txt
creará un archivo con la extensión dada en la carpeta actual.
ACTUALIZAR:
para un uso de archivo vacío: copie NUL filename.txt
fuente
type NUL > filename
(crea un archivo de 0 bytes)type NUL >> filename
La respuesta es incorrecta, solo funciona cuando el archivo no existe. Si el archivo existe, usar el primero no hace nada, el segundo agrega una línea al final del archivo.
La respuesta correcta es:
Lo encontré aquí: /superuser/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
fuente
Me sorprende cuántas respuestas aquí son incorrectas . Hacer eco de nada en un archivo llenará el archivo con algo así
ECHO is ON
, y tratar de hacer eco$nul
en un archivo literalmente lo colocará$nul
en el archivo. Además, para PowerShell, hacer eco$null
en un archivo en realidad no generará un archivo de 0kb, sino algo codificado comoUCS-2 LE BOM
, que puede ser complicado si necesita asegurarse de que sus archivos no tengan una marca de orden de bytes.Después de probar todas las respuestas aquí y hacer referencia a algunas similares, puedo garantizar que funcionarán por consola. Simplemente cambie
FileName.FileExtension
a la ruta completa o relativa del archivo que deseatouch
; Gracias a Keith Russell por laCOPY NUL FILE.EXT
actualización:CMD con actualizaciones de fecha y hora
copy NUL FileName.FileExtension
Esto creará un nuevo archivo llamado lo que haya colocado en lugar de
FileName.FileExtension
un tamaño de 0 bytes. Si el archivo ya existe, básicamente se copiará en el lugar para actualizar la marca de tiempo. Diría que esto es más una solución alternativa que la funcionalidad 1: 1,touch
pero no conozco ninguna herramienta incorporada para CMD que pueda lograr actualizar la marca de tiempo de un archivo sin cambiar ningún otro contenido.CMD sin actualizaciones de fecha y hora
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell con actualizaciones de fecha y hora
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
Sí, funcionará en la consola como una línea; no es necesario colocarlo en un archivo de script de PowerShell.
PowerShell sin actualizaciones de fecha y hora
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
fuente
fsutil file CreateNew FileName.FileExtension 0
porcopy NUL Filename.FileExtension
, ya que este último es más corto y hace lo mismo.copy
másfsutil
, pero ha sido un tiempo ... Estoy bastante seguro de que es cómo incluso aprendieron sobrefsutil
jaja! Trataré de averiguar por qué ...Use el siguiente comando en su línea de comando:
La información de parámetros como sigue:
fsutil: utilidad del sistema de archivos (el ejecutable que está ejecutando)
archivo: desencadena una acción de archivo
createnew: la acción a realizar (crear un nuevo archivo)
nombre de archivo: sería literalmente el nombre del archivo
requiredSize: asignaría un tamaño de archivo en bytes en el archivo creado
fuente
NULL
s ... raro ... así que solo use 0 ... genera un error si omite el requiredSize .. .En Windows Power Shell, puede usar el siguiente comando:
o
fuente
'New-Item' is not recognized as an internal or external command
Puede replicar la funcionalidad del tacto con el siguiente comando:
Lo que esto hace es intentar ejecutar un programa llamado
$
, pero si$
no existe (o no es un ejecutable que produce salida), entonces no produce ninguna salida. Es esencialmente un truco en la funcionalidad, sin embargo, recibirá el siguiente mensaje de error:Si no desea el mensaje de error, puede hacer una de dos cosas:
O:
El
type
comando intenta mostrar el contenido de nul, que no hace nada pero devuelve un EOF (final del archivo) cuando se lee.2>nul
envía salida de error (salida 2) a nul (que ignora todas las entradas cuando se escribe en). Obviamente, el segundo comando (con2>nul
) setype
vuelve redundante debido a que es más rápido de escribir. Pero al menos ahora tiene la opción y el conocimiento.fuente
%ERRORLEVEL%
en un valor distinto de cero. Puede solucionar ese problema agregando un noop|| cd.
, pero esto siempre establece el error en 0, que podría no ser lo que desea si falla el "toque".No es necesario ningún comando, ni
type
tampocoecho
, para emular el comando 'táctil' de Unix / Mac OS X en un terminal de Windows Powershell. Simplemente use la siguiente taquigrafía:Esto creará un archivo vacío llamado 'nombre de archivo' en su ubicación actual. Utilice cualquier extensión de nombre de archivo que pueda necesitar, por ejemplo, '.txt'.
Fuente: /superuser/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (ver comentarios)
fuente
echo
$null > filename
envía esa salida de vacío a nombre de fichero (si usted me entiende).echo
En el terminal de línea de comando estándar (cmd) que necesitaecho
. Perdón por la confusion.También puede usar copy con [filename] en una ventana de comandos de Windows (cmd.exe):
Esto creará un archivo llamado
yourfile.txt
en el directorio local.fuente
como se mencionó
puede ser cualquier archivo, con cualquier extensión, entonces
esto abrirá su archivo en el editor de bloc de notas
fuente
Yo uso
cmder
(un emulador de línea de comando)Le permite ejecutar todos los comandos de Linux dentro de una máquina con Windows.
Se puede descargar desde https://cmder.net/
Me gusta mucho
fuente
Suponiendo que el archivo existe y solo necesita actualizar la marca de tiempo.
fuente
Desde la Terminal de Visual Code Studio en Windows 10, esto es lo que me funcionó para crear un nuevo archivo:
fuente
Si tiene Cygwin instalado en su PC, simplemente puede usar el ejecutable suministrado para tocar (también a través del símbolo del sistema de Windows):
fuente
Fácil, ejemplo con archivo txt
fuente
$null
al archivo.Sí, puedes usar Node for Touch, solo lo uso y funciona bien en Windows Cmd o gitbash
fuente
[cmd]
, y eso implica que el OP quiere una respuesta que funcione de manera inmediata para CMD, lo que significa que no hay utilidades de línea de comandos que no estén empaquetadas con una instalación predeterminada de Windows. Eso excluirá prácticamente todos los lenguajes de secuencias de comandos, incluso los lenguajes de secuencias de comandos integrados de Windows como CScript, WScript y PowerShell. El punto no es que funcione en el entorno CMD, sino que es posible para cualquier persona con acceso a CMD, sin incluir problemas de permisos.