2012-06-21 44 views
8

in php posso modificare il file ultima modifica e accesso in tempo arbitrariamente con touch()Modifica file di data di creazione su Windows con PHP

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

... ma come cambiare il tempo creazione?

Perché ho bisogno di questo? Bene, se reindirizzando un file o una directory mtime a prima della data di creazione, explorer.exe continua a mostrarmi la data di creazione più recente.

+0

So che suona un po 'stupido ... ma potresti sempre copiare il contenuto del file in uno nuovo ed eliminare il vecchio file. Anche se considererei questo metodo un ultimo ricorso perché è piuttosto sciatto - e immagino che sarebbe anche un uso intensivo delle risorse. – sammarks

+0

@sammarks In realtà sto archiviando materiale, e vorrei mettere cose vecchie in una * vecchia * directory, quindi quell'approccio richiederebbe un mayem di impostazione/ripristino dell'orologio di sistema. :) – ZJR

risposta

2

Mh, un approccio insoddisfacente, ma di lavoro, che ho scoperto, è: utilizzando nircmd.
Nircmd è un'utilità da 37kb. (Ridistribuibile, closed-source, freeware)

come procedere:

<?php 

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

Note:

  • nircmdc.exe è la versione a riga di comando di nircmd (osservino i c prima .exe)
  • setfilefoldertime è un sottocomando nircmd, it is documented here.

Ancora, spero che ci sia una soluzione COM o WMIC che non ho potuto trovare questa volta.

+1

Purtroppo questa è la soluzione alla quale ho dovuto ricorrere. Come ha detto ZJR, non è soddisfacente perché richiede una chiamata di sistema che non è l'ideale, e nel mio caso è orribile dal momento che ho bisogno di farlo in un circuito chiuso per elaborare migliaia di file, il che lo rende al meglio instabile. – Synetech

+0

Inoltre, 'nircmd' non supporta file o cartelle con caratteri Unicode nei loro nomi. – Synetech

1

Provate questo è possibile modificare file di data di creazione e modifica il tempo

Win32 Console ToolBox 1.1

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

nircmdc -> è a potenti

Problemi correlati