2012-06-21 19 views
8

en PHP que puedo cambiar el archivo de la última modificación y acceso en tiempo arbitrariamente con touch()de modificación del archivo fecha de creación en Windows con PHP

<?php 
touch($filename,mktime(0,0,0,2010,1,10)); 

... pero la forma de cambiar el tiempo de creación ?

¿Por qué necesito esto? Bueno, si retrocribo un archivo o un directorio mtime a antes de su fecha de creación, explorer.exe me sigue mostrando la fecha de creación más reciente.

+0

Sé que suena un poco estúpido ... pero siempre puedes copiar el contenido del archivo en uno nuevo y eliminar el archivo anterior. Aunque consideraría este método como un último recurso porque es un poco descuidado, y me imagino que también sería intensivo en recursos. – sammarks

+0

@sammarks En realidad estoy archivando cosas, y me gustaría poner cosas viejas en un directorio * old *, por lo que ese enfoque requeriría un tiempo de configuración/reinicio del reloj del sistema. :) – ZJR

Respuesta

2

Mh, un enfoque insatisfactorio, pero funcional, me enteré, es: usando nircmd.
Nircmd es una utilidad de 37kb. (Redistribuible, de fuente cerrada, freeware)

la forma de proceder:

<?php 

$time=strftime('%d-%m-%Y %H:%M:%S',$time); 
$cmd=".\\nircmdc.exe setfilefoldertime \"$filename\" \"$time\""; 
system($cmd); 

Notas:

  • nircmdc.exe es la versión de línea de comandos de NirCmd (nótese el adicional c antes .exe)
  • setfilefoldertime es un subcomando nircmd, it is documented here.

Aún así, espero que haya una solución COM o WMIC que no pude encontrar esta vez.

+1

Desafortunadamente esta es la solución a la que tuve que recurrir. Como dijo ZJR, no es satisfactorio porque requiere hacer una llamada al sistema que no es ideal, y en mi caso, es horrible ya que necesito hacerlo en un circuito cerrado para procesar miles de archivos, lo que lo hace inestable en el mejor de los casos. – Synetech

+0

Además, 'nircmd' no admite archivos o carpetas con caracteres Unicode en sus nombres. – Synetech

1

Prueba con esto se puede cambiar la hora de creación del archivo y modificar el tiempo

Win32 Console ToolBox 1.1

exec('touch.exe /c /t "file.html" '. date('H:i:s')); 

nircmdc -> es poderosa

Cuestiones relacionadas