¿Qué utiliza cuando desea actualizar el campo de fecha modificada de un archivo en Windows?
- comandos accesibles a través de C ++, .NET, C # o algo nativo de Windows (preferiblemente Vista)
- herramientas / aplicaciones preferiblemente gratuitas, y si es posible también de código abierto
Editar: ya hay una página para aplicaciones como señala CheapScotsman aquí .
Si alguien sabe cómo puedo hacer esto a través de C ++, C #, WSH o algo similar, bueno y bueno, de lo contrario, creo que todo lo demás está cubierto en la pregunta vinculada.
windows
file-attributes
touch
facepalmd
fuente
fuente
REM.>a
Respuestas:
Si desea tocar el sello de fecha de un archivo usando Windows, use el siguiente comando en el símbolo del sistema:
(donde
filename.ext
está el nombre de su archivo). El+,,
es un indicador especial paracopy
decirle que simplemente actualice la fecha / hora en el archivo :Editar basado en los comentarios de Lumi y Justin: poner esto en un archivo por lotes, por ejemplo. touch.cmd
Esto funciona incluso si el archivo no está en el directorio actual (probado en Windows 7).
fuente
type touch.bat
is@echo off
and next linecopy /b %1 +,,
: póngalo enC:\bin
o lo que tenga para sus propios scripts, y luego puede usarlo comotouch myfile.txt
.copy /b Source+,, Source
- dondeSource
incluye la ruta completa al archivo+,,
: blogs.msdn.com/b/oldnewthing/archive/2013/07/10/10432879.aspxHe usado y recomiendo unxutils que son puertos nativos de Win32 de muchas utilidades comunes de Unix. Hay un
touch
comando allí.fuente
"test тест τεστ.txt"
touch
comando. Es como cualquier otra cosa en entornos nix, puedes hacerlo o puedes sudarlo, o no puedes porque no tienes privilegios.Si todo lo que desea es cambiar la última fecha de modificación del archivo (que fue mi caso):
fuente
gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date }
file
si no existe.cmd
incorporados.ACTUALIZAR
Gah! Esto no funciona en archivos de solo lectura, mientras que
touch
sí. Yo sugiero:fuente
filename +,,
sintaxis extraña .@ dash-tom-bang:
Aquí está la explicación de Technet del misterioso '+' y comas:
El comando copiar admite la fusión de varios archivos en un solo archivo de destino. Dado que no se puede especificar un destino en blanco usando un carácter de espacio en el símbolo del sistema, se pueden usar dos comas para denotar eso.
Y esta es la referencia de comando de copia de Technet: http://technet.microsoft.com/en-us/library/bb490886.aspx
fuente
Si usted se siente como la codificación de usted mismo, .NET ofrece las
File.SetLastAccessTime
,File.SetCreationTime
yFile.SetLastWriteTime
métodos.fuente
aquí hay una versión recursiva que usa powershell ... esto cambiará la última hora de modificación para todos los archivos y subdirectorios, y los archivos dentro de los subdirectorios de este directorio
fuente
ls * -recurse | % { $_.LastWriteTime = Get-Date }
El proyecto GnuWin32 tiene puertos de Windows de las versiones Gnu de las utilidades de línea de comandos de Unix.
Viene como una serie de paquetes separados y puede instalar solo los comandos que necesita sin otras dependencias. Para
touch
usted necesitaría el paquete CoreUtils .fuente
cygwin
viene contouch
. Sé que mencionó que no desea instalar un marco completo, pero cygwin es bastante liviano y se puede llamar desde la ventana de comandos de DOS sin que se active toda la línea de comandos tipo Unix.También puede controlar qué herramientas instalar, por lo que simplemente puede instalar el
touch.exe
archivo y dejar el resto del marco.fuente
Intenté esto para crear un archivo vacío en mi script por lotes. Puedes usar esto:
fuente
echo pie>.gitignore
funcionó de maravilla. ¡Gracias!.gitignore.
y cuando presiona enter Windows elimina el período final. Loco, pero funciona.Aquí hay un simple archivo de registro que escribí para agregar "clic" con el botón derecho en el explorador de Windows . También sería fácil escribirlo, ya que solo llama:
fuente
copy nul some_file
de crear un archivo vacío (que es lo que veotouch
más utilizado).Puertos nativos win32 de muchos comandos unix , incluido el táctil.
Lo he usado antes y funciona bien: sin instalación, sin archivos DLL, etc.
fuente
Pruebe este de CodeProject .
fuente
También puede instalar Cygwin, que le ofrece Touch, así como una gran cantidad de otros comandos * NIX.
fuente
Hay puertos de Windows de muchas utilidades de Unix. Echa un vistazo a los proyectos unxutils o GnuWin32 .
fuente
De una pregunta similar sobre Stack Overflow.
Para actualizar las marcas de tiempo (ignorando la otra funcionalidad de
touch
), iría con:fuente
¿Qué hay de codeproject "Touch para Windows": http://www.codeproject.com/KB/applications/touch_win.aspx
editar; La misma pregunta que aquí: https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
fuente
del sitio web:
fuente
Este contenido se puede guardar en un archivo de registro. Esto agregará un menú contextual de clic derecho para todos los archivos con la capacidad "Touch File" (probado en Windows 7). Copie todas las siguientes líneas al archivo de registro. Ejecute el archivo y apruebe la pregunta. Haga clic derecho en cualquier archivo (o en varios archivos): la opción "Touch File" ahora está disponible.
fuente
Si está utilizando git para uno o más proyectos, el mingw basado
git-bash
en Windows tiene eltouch
comando. Quiero agradecer a @ greg-hewgill por señalarme que existen 'utilidades nix para Windows, porque fue eso lo que me propuso intentar tocar en git-bash.fuente
en PowerShell intente:
NI
es un alias del cmdlet New-Item .fuente
ni
comando y quizás describa más lo que hace el comando?New-Item
cmdlet no se puede usar para actualizar la marca de tiempo de un archivo existente.Guarde lo siguiente como touch.bat en su carpeta% windir% \ system32 o agregue la carpeta en la que está guardada en su variable de entorno PATH:
Uso de la muestra:
Referencia: Microsoft KB 69581
fuente
Encontré una forma rápida de hacerlo si tiene vim instalado (no es bueno para archivos grandes, abrirá todo el archivo y luego lo cerrará ...)
El "+" establece el argumento para ejecutar los siguientes comandos. "wq!" es "escribir, salir, forzar". Esto abrirá el archivo, lo guardará y luego lo cerrará inmediatamente después.
fuente
Quería la función 'táctil' de clonar / duplicar las fechas de archivo de otro archivo, de forma nativa, y ser utilizable desde un archivo por lotes.
Entonces, 'arrastre y suelte' el archivo de video en un archivo por lotes, FFMPEG se ejecuta, luego 'Fecha de creación' y 'Fecha de modificación' del archivo de entrada se copia en el archivo de salida.
Esto pareció simple al principio hasta que descubrió que los archivos por lotes son terribles para manejar nombres de archivo Unicode, PowerShell en línea se equivoca con los símbolos de nombre de archivo, y el doble escape es una pesadilla.
Mi solución fue hacer que la parte 'táctil' fuera un script separado de PowerShell que llamé 'CLONE-FILE-DATE.ps1' y que contiene:
Entonces, aquí hay un ejemplo de uso dentro de mi archivo por lotes 'CONVERT.BAT':
Creo que PowerShell es legible, por lo que solo explicaré el discurso por lotes:
% ~ dp0 es el directorio actual del archivo por lotes.
% ~ 1 es la ruta del archivo soltado en el lote sin comillas.
CHCP 65001> nul establece caracteres en UTF-8 y se traga la salida.
-ExecutionPolicy ByPass le permite ejecutar PowerShell sin necesidad de modificar la política global, que está allí para evitar que las personas ejecuten scripts accidentalmente.
fuente
Tratar
fsutil file createnew new.txt 0
fuente
The FSUTIL utility requires that you have administrative privileges.
- y no se comporta comotouch
para los archivos existentes.Las cinco alternativas mencionadas anteriormente, más tres más no mencionadas aquí, se pueden encontrar en SuperUser: "Comando táctil recursivo de Windows"
fuente
Esto no está relacionado con la pregunta original, pero me parece muy útil en Windows debido a la GUI.
Estoy usando la utilidad TouchPro que proporciona una GUI (compilada en el shell del explorador):
http://www.jddesign.co.uk/products/touchpro/touchpro.htm
fuente
Bueno, si realmente quieres tener el
touch
comando disponible, puedes ponerlo en un archivo por lotes llamadotouch.bat
y pegarlo enC:\Windows
:Suficientemente simple.
fuente
La gente de Unix solucionó el problema general de actualizar la fecha del archivo de cualquier archivo con el comando táctil . Sin embargo, para Windows, a veces es posible un método más simple para casos especiales.
Necesito actualizar la marca de tiempo de un acceso directo de la aplicación en Windows 8.1 para poder ver los cambios en el color de fondo del mosaico de la aplicación, vea esta pregunta de SO . En lugar de implementar una de las herramientas inteligentes anteriores, me resulta más fácil editar el campo de comentarios del acceso directo. La mayoría de la gente deja esto vacío, pero, por supuesto, se concibe rápidamente un comentario útil. Y si existe un comentario, agregar o eliminar un período final nunca hace daño.
fuente
Aprecio que esta es una vieja pregunta, acabo de descubrir el tacto en mi sistema Windows 10. Descargué e instalé Git desde aquí (creo) y parece táctil y varias otras utilidades están en la carpeta bin.
fuente