Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmi e Utility (https://www.hwupgrade.it/forum/forumdisplay.php?f=37)
-   -   Modificare/Cambiare data attributi (proprietà) con nome file (o foto) (https://www.hwupgrade.it/forum/showthread.php?t=2847779)


danyele79 16-03-2018 16:22

Modificare/Cambiare data attributi (proprietà) con nome file (o foto)
 
Salve,ho tentato una ricerca ma senza risultati prima di creare una nuova discussione,avrei bisogno di sapere se esiste un metodo che possa risolvermi questo problema:

Ho dei file che una volta copiati con il s.o. android hanno perso le date degli attributi, o meglio, quando con android si copiano o spostano file diversi, le date degli attributi vengono modificate TUTTE con la data in cui si è effettuata l'ultima operazione, quindi data creazione,ultima modifica,ultimo accesso, vengono tutte portate a quella in cui è stata effettuata la copia o lo spostamento.

Detto ciò,per fortuna questi file (o foto) capita che abbiano all'interno del nome stesso del file,la data in cui sono stati creati (es. IMG-20180316.jpg , Camera-20160515-183520.jpg , o ancora altro tipo ContactOut(05-29-2016 19-31-08).mp3), perciò per fortuna con la possibilità di risalire comunque alla data a cui si riferisce, a me occorrerebbe perciò un programmino (un file bat,una stringa modificabile), che andasse a pescare su indicazione dell'utente il giorno,il mese,l'anno, e volendo anche l'ora, dal nome del file, per poi andarlo a modificare negli attributi,soprattutto quello di ultima modifica,che poi è l'attributo di riferimento che android usa per elencare in ordine cronologico i file o le foto/video.

Ho già trovati molti programmi che modificano gli attributi ma al massimo prendono come riferimento le date di uno per modificarne un altro, o al massimo andandoli a pescare nelle proprietà EXIF delle foto, ma i file dei quali ho bisogno di modificare gli attributi non sono foto, oppure sono immagini che non hanno,o non li hanno più (come nel caso di immagini condivise su whatsapp).

Naturalmente il tutto potrebbe essere fatto manualmente ma ovvio che mi riferisco ad un notevole numero di file da modificare..non so più come muovermi,vi prego aiutatemi
GRAZIE

x_Master_x 17-03-2018 08:14

Ti do giusto qualche indicazione perchè non ho tempo proprio per farlo io con un linguaggio di programmazione serio che usi RegEx e senza utilizzo di terze parti

La prima cosa è separare i file in diverse cartelle, ognuno con il suo patter. Quelle che iniziano con IMG, Camera ecc. se vuoi per fare questa operazione puoi usare Old Files Manager, link in firma, oppure manualmente. Con un batch puoi estrarre solo la data impostando quanti caratteri tagliare a sinistra e a destra, in questo modo:
Codice:

: x_Master_x
@ECHO OFF
SET ESEMPIO=IMG-20180316.jpg
SET DATE=%ESEMPIO:~4,-4%

SET YEAR=%DATE:~0,-4%
SET MONTH=%DATE:~4,-2%
SET DAY=%DATE:~6%

ECHO %DAY%
ECHO %MONTH%
ECHO %YEAR%

PAUSE

SET ESEMPIO=Camera-20160515-183520.jpg
SET DATE=%ESEMPIO:~7,-11%
SET TIME=%ESEMPIO:~16,-4%

SET YEAR=%DATE:~0,-4%
SET MONTH=%DATE:~4,-2%
SET DAY=%DATE:~6%

SET HOUR=%TIME:~0,-4%
SET MIN=%TIME:~2,-2%
SET SEC=%TIME:~4%

ECHO %DAY%
ECHO %MONTH%
ECHO %YEAR%

ECHO %HOUR%
ECHO %MIN%
ECHO %SEC%

PAUSE

Ora che hai separato anno, mese e giorno e se presente l'ora con uno dei tanti programmi per impostare la data tramite commandline il passaggio successivo è semplice:
Codice:

nircmd.exe setfiletime "C:\Temp\MyFile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"
nircmd.exe setfiletime "%PATH%" "%DAY%-%MONTH%-%YEAR% 17:57:11" "%DAY%-%MONTH%-%YEAR% 10:21:56"
nircmd.exe setfiletime "%PATH%" "%DAY%-%MONTH%-%YEAR% %HOUR%:%MIN%:%SEC" "%DAY%-%MONTH%-%YEAR% %HOUR%:%MIN%:%SEC"

Ovviamente manca la ricerca dei file via loop ecc. ma ti ho dato una idea da dove partire e cosa studiare. In caso c'è anche la sezione "Programmazione" sul forum se dovessi bloccarti in qualche punto

Buona fortuna ;)

danyele79 17-03-2018 11:11

Grazie,sto provando a fare i primi tentativi ma su un paio di cose non riesco a definire,ovvero, la tilde che comando impartisce? (OK risolto,i caratteri da tagliare da sinistra,nei file che iniziano per IMG dopo ci sono altri caratteri che non avevo tagliato prendendo il tuo primo esempio)

E poi in particolare la seconda parte,credo quella più "importante" non riesco a capirla,a cosa servono quei comandi?Come mai dopo la cartella c'è un file txt?le date tra virgolette che rappresentano?come vanno sostituite?
Se non riesci a rispondermi tu,potresti indicarmi in quale 3D della sezione programmazione,se già aperto,chiedere chiarimenti?
Grazie

x_Master_x 17-03-2018 11:46

Da quello che scrivi i batch sai solo come eseguirli. Nella sezione "Programmazione" devi aprire un thread nuovo con una domanda specifica al codice ma ti avviso che difficilmente qualcuno scriverà il suddetto codice per te, devi partire da una base. La ricerca dei file tramite batch (trovi su Google migliaia di esempi) unita al mio codice per l'estrazione dei dati dal nome del file è una prima base di partenza.

danyele79 17-03-2018 12:03

Beh non sono solito creare file batch o programmazione in genere...vado più che altro per "intuito informatico"
In effetti non ho capito nemmeno come faccia poi il file batch a riconoscere TUTTI i file diversificando le date contenute in ognuno di essi...quando dici di mettere tutti i file di una stessa pattern dentro una cartella intendi tutti quelli dello stesso tipo..non uno per ogni cartella con un file bat insieme,giusto?

Non mi spiego piuttosto come non si trovi già in giro qualche utility, o stessi file batch, già creati apposta per una funzione del genere..:confused: , il grosso limite che pone android sotto questo punto di vista ai file è strano che non sia già stato "gestito" in passato :boh:
Infatti proprio per questo avevo aperto la discussione quì,credevo solo di non aver trovato io qualcosa del genere,non che non ci avesse mai pensato nessuno :eek:

Comunque..posso creare una discussione con lo stesso identico messaggio postato quì per avere supporto?

provasasa 17-03-2018 12:12

...

x_Master_x 17-03-2018 12:51

Quelli dello stesso tipo. I file che iniziano per IMG in una cartella con il bat che riconosce quel pattern, quelli che iniziano con Camera in un'altra e così via. Ti ripeto, prima di aprire il thread devi avere qualcosa di base altrimenti sarà la prima cosa che ti diranno. Oppure se mi paghi 100 euro lo faccio io :asd:

P.S. Non mi risulta, da quel che ricordo, che Bulk modifica il timestamp partendo dal nome del file. Modifica i timestamp sicuramente ma con uno fixed

provasasa 17-03-2018 13:39

...

x_Master_x 17-03-2018 14:11

Oggi mi sento gentile e con un po' di tempo...

Ecco il Batch
Codice:

: x_Master_x
@ECHO OFF
SetLocal EnableDelayedExpansion

FOR %%x in (*IMG*) DO (
  SET FILENAME=%%x
  SET DATE=!FILENAME:~4,-4!
  SET YEAR=!DATE:~0,-4!
  SET MONTH=!DATE:~4,-2!
  SET DAY=!DATE:~6!
  SET GET_DATETIME=%%~tx
  SET GET_HOUR=!GET_DATETIME:~11,-3!
  SET GET_MIN=!GET_DATETIME:~14!
  START /W "" nircmd.exe setfiletime "!FILENAME!" "!DAY!-!MONTH!-!YEAR! !GET_HOUR!:!GET_MIN!:00" "!DAY!-!MONTH!-!YEAR! !GET_HOUR!:!GET_MIN!:00"
)

FOR %%x in (*Camera*) DO (
  SET FILENAME=%%x
  SET DATE=!FILENAME:~7,-11!
  SET TIME=!FILENAME:~16,-4!
  SET YEAR=!DATE:~0,-4!
  SET MONTH=!DATE:~4,-2!
  SET DAY=!DATE:~6!
  SET HOUR=!TIME:~0,-4!
  SET MIN=!TIME:~2,-2!
  SET SEC=!TIME:~4!
  START /W "" nircmd.exe setfiletime "!FILENAME!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!"
)

FOR %%x in (*ContactOut*) DO (
  SET FILENAME=%%x
  SET DATE=!FILENAME:~11,-14!
  SET TIME=!FILENAME:~22,-5! 
  SET YEAR=!DATE:~6!
  SET MONTH=!DATE:~0,-8!
  SET DAY=!DATE:~3,-5!
  SET HOUR=!TIME:~0,-9!
  SET MIN=!TIME:~3,-6!
  SET SEC=!TIME:~6,-1!
  START /W "" nircmd.exe setfiletime "!FILENAME!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!"
)

FOR %%x in (*amr*) DO (
  SET FILENAME=%%x
  SET R_FILENAME=!FILENAME:~-24!
  SET DATE=!R_FILENAME:~10,-4!
  SET TIME=!R_FILENAME:~1,-15!
  SET YEAR=!DATE:~6!
  SET MONTH=!DATE:~3,-5!
  SET DAY=!DATE:~0,-8!
  SET HOUR=!TIME:~0,-6!
  SET MIN=!TIME:~3,-3!
  SET SEC=!TIME:~6!
  START /W "" nircmd.exe setfiletime "!FILENAME!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!"
)

PAUSE

Basta metterlo nella cartella che contiene i file che hanno questo tipo di pattern:
Codice:

IMG-20180316.jpg
Camera-20160515-183520.jpg
ContactOut(05-29-2016 19-31-08).mp3
Out NOME_CONTATTO (NUMERI) 14~59~53 27-02-2018.amr

Insieme a NirCmd. Non è necessario separare i file, il batch automaticamente riconoscerà i file giusti e il relativo pattern


-----------------------


Come creare nuovi pattern. Ho usato quella struttura appositamente per renderla modificabile a chiunque, anche a chi di Batch non se ne intende.

1) La strutture di base sono due. Quella con *IMG* se non è presente l'ora nel nome del file che viene quindi estratta dal file stesso, quella con *ContactOut* se l'ora nel nome del file è presente

2) Calcolare i caratteri da tagliare, è semplice pura matematica elementare. Ad esempio nel nome del file:
Codice:

ContactOut(05-29-2016 19-31-08).mp3
Se volessimo estrarre la stringa che contiene la data, quindi 05-29-2016, sono da tagliare 11 caratteri all'inizio cioè ContactOut( e 14 compreso di spazio alla fine quindi 19-31-08).mp3. Ergo la stringa sarà:
SET DATE=!FILENAME:~11,-14!

Così via per OGNI variabile indicata nel batch (escluse FILENAME e GET_DATETIME) e i nomi sono esplicativi di cosa è richiesto. Tutto qui

Non quotare questo post per eventuali modifiche

danyele79 17-03-2018 14:30

Ciao Provasasa,ti ringrazio per l'intervento però se hai letto i file per i quali ho questo problema ho scritto che..
Ho già trovati molti programmi che modificano gli attributi ma prendono come riferimento le date di uno per modificarne un altro, o al massimo andandoli a pescare nelle proprietà EXIF delle foto, ma i file dei quali ho bisogno di modificare gli attributi non sono foto, oppure sono immagini che non hanno,o non li hanno più (come nel caso di immagini condivise su whatsapp)

Quote:

Originariamente inviato da x_Master_x (Messaggio 45438429)
Oggi mi sento gentile e con un po' di tempo...

Ecco il batch

Grande x_Master_x..!!!Grazie
Per le immagini ho già provato e funziona :winner: (tra l'altro ho anche modificato con successo i caratteri da tagliare da destra in quanto c'erano anche altri caratteri successivi)
Eventualmente andava bene anche se avessi fatto solo uno per ogni tipo di pattern tanto portarli in una cartella dedicata non sarebbe stato un problena..per quanto già lo sono di loro..comunque grazie :cincin:
Non avevo messo i file di nircmd all'interno della cartella prima,forse per quello non andava

Ora anche per gli altri pattern "giocherò" sui nomi e sui caratteri da tagliare ma l'importante è avere di base già quello per le foto..eventualmente ti ridisturbo,nel frattempo dammi l'iban per l'accredito :D

Spero venga indicizzato nei motori di ricerca questa soluzione così chi volesse risolvere questo problema avrà un supporto grazie a te :ave:

x_Master_x 17-03-2018 14:51

Troppa gente mi dice dell'IBAN, se divento ricco penso a te ecc. sì come no, nel frattempo... :asd:
Mi fa piacere che funziona anche a te, l'avevo provato prima di postarlo. Non cambia nulla se sono immagini, testo o musica. Se hai bisogno di aiuto per i pattern scrivi in questo thread e li aggiungo al batch ma non credo avrai difficoltà.

danyele79 17-03-2018 15:03

In realtà un problemino ci sarebbe su dei file audio (registrazioni di chiamata archiviate dall'applicazione),ovvero la lunghezza da cui iniziare a tagliare cambia di file in file in quanto vengono salvati ogni volta ad esempio con il nome in rubrica (se presente) e/o con il numero di telefono
esempio: In Casa (+390*********) 14~36~45 29-02-2018.amr
oppure : Out Marco (3*********) 14~59~53 27-02-2018.amr , Out Contatto sconosciuto (3*********) 11~12~16 17-03-2018.amr
Quì è un po' più problematico misà venirne a capo.
..Aspetta..forse si potrebbe,se possibile,partire a tagliare sempre da destra in quanto da quel "lato" finiscono tutti uguali...è fattibile?

provasasa 17-03-2018 15:10

...

danyele79 17-03-2018 15:14

Ah ok,non avendolo specificato che si potesse prendere la data dal nome del file non mi ero andato ad informare,allora provo anche quello semmai,per quanto per le foto (e altri file) il batch di x_Master_x ho già visto funziona

x_Master_x 17-03-2018 15:43

Danyele79,
Esatto basta tagliare solo il lato di sinistra lasciando il lato di destra, semplicemente aggiungendo una variabile in più. Batch aggiornato

danyele79 17-03-2018 16:11

MITICO!!
Nel batch poi ho inserito io una stessa sequenza modificando solo i caratteri IMG in VID per farlo funzionare anche con i video whatsapp :cincin:

x_Master_x 17-03-2018 16:24

Bene, divertiti e conserva i soldi :D

danyele79 19-03-2018 19:34

Ciao x_Master_x, scusami ti ridusturbo per una cosa facilissima, dalle stringhe che hai creato sono riuscito ad adattare ben altri 4 tipi di file che riportavano data e ore diverse,ovvero anni mesi giorni quando invertiti quando ad esempio col sistema americano mese giorno anno,le ore col trattino o senza,con o senza prefissi prima..ecc,ma con il tipo di file di lunghezza iniziale variabile non sono proprio riuscito ad impostare i comandi "all'indietro",per un altro formato che ho trovato per lo stesso tipo di file..
dunque,tu avevi creato il comando per questo:
Out NOME_CONTATTO (NUMERI) 14~59~53 27-02-2018.amr
ho scoperto che prima di una certa data il formato di questi file è
Out NOME_CONTATTO (NUMERI) 21.09.2017 17.31.31.amr
Riusciresti gentilmente ad aggiungere il comando?
Grazie ancora
[EDIT]..apposto,credo di aver risolto
sembra funzionare,ho aggiunto:
Codice:

FOR %%x in (*amr*) DO (
  SET FILENAME=%%x
  SET R_FILENAME=!FILENAME:~-24!
  SET DATE=!R_FILENAME:~1,-13!
  SET TIME=!R_FILENAME:~12,-4!
  SET YEAR=!DATE:~6!
  SET MONTH=!DATE:~3,-5!
  SET DAY=!DATE:~0,-8!
  SET HOUR=!TIME:~0,-6!
  SET MIN=!TIME:~3,-3!
  SET SEC=!TIME:~6!
  START /W "" nircmd.exe setfiletime "!FILENAME!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!" "!DAY!-!MONTH!-!YEAR! !HOUR!:!MIN!:!SEC!"
)


CristianSilvi 05-02-2022 15:54

Modifica su un percorso di rete
 
Vi ringrazio in anticipo per la discussione e l'ho trovata utilissima anche per il mio caso

l'unico problema è che quando ricopio i file nel telefono si resettano di nuovo le date

è possibile far eseguire il comando puntando ad una cartella specifica?
tipo la seguente?

"Questo PC\A32 di Oriana\Phone\Android\media\com.whatsapp\WhatsApp\Media\WhatsApp Images"

grazie

Excalibur59 27-09-2023 19:33

Quote:

Originariamente inviato da danyele79 (Messaggio 45436983)
Ho dei file che una volta copiati con il s.o. android hanno perso le date degli attributi, o meglio, quando con android si copiano o spostano file diversi, le date degli attributi vengono modificate TUTTE con la data in cui si è effettuata l'ultima operazione, quindi data creazione,ultima modifica,ultimo accesso, vengono tutte portate a quella in cui è stata effettuata la copia o lo spostamento.
GRAZIE

Anche se la discussione non è proprio recente, avendo avuto anche io lo stesso problema, posto qui la soluzione che ho trovato (vale per le foto, che hanno la data di creazione o nel nome del file o nei dati EXIF.
Questa App risolve velocemente ed in modo indolore il problema (per lo meno per le foto)
Spero di essere stato utile :)


Tutti gli orari sono GMT +1. Ora sono le: 14:23.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.