Zmena atributu datum a cas podle nazvu souboru

Moderated forum for Slovak and Czech users

Moderator: Hacker

fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Zmena atributu datum a cas podle nazvu souboru

Post by *fgci »

Ahoj, potřeboval bych u velkého množství (stovky souborů) hromadně změnit atributy souborů: datum a čas podle názvu souboru.
Například soubor:
20170710_151341.jpg......................24.08.2017 18:42:12
na soubor s atributy času
20170710_151341.jpg......................10.07.2017 15:13:41

Díky
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

PowerShell: set timestamp from file name

Post by *Stefan2 »

Spusťte PowerShell ve složce se soubory a spusťte tento skript PoSh:



Set timestamps for file named "20170710_151341.jpg" to "10.07.2017 15:13:41"


GCI|%{ $BN=$($_.BaseName -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }


jeden dlouhý řádek








Opět, další podrobnosti:

Code: Select all

Get-ChildItem | 
ForEach-Object{ 
     $BN=$($_.BaseName -replace "_",""); 
     $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);  
     $_.CreationTime=$TS; 
     $_.LastWriteTime=$TS;
     $_.LastAccessTime=$TS 
}




 
fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Post by *fgci »

Uf, chvíli jsem bojoval s PowerShellem, ale podařilo se.
Díky moc.
fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Post by *fgci »

Ještě jsem zjistil jiné varianty názvu souborů, které jsou delší a z nich to neumí zapsat atributy.
Dal by se skript upravit pro tyto delší názvy?
např.:
20170701_001610_001~2
20170709_215542(0)
20170709_223256_001

Děkuji
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Časová značka z názvů souborů, například:

20170710_151341.jpg
20170824_184212.jpg
20170701_001610_001 ~ 2.jpg
20170709_215542 (0).jpg
20170709_223256_001.jpg
(Název souboru začíná časovou značkou)



Snaž se:

Set timestamps for file named "20170710_151341 something more here.jpg" to "10.07.2017 15:13:41"


GCI|%{ $BN=$($_.BaseName.Substring(0,15) -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }

--- jeden dlouhý řádek ---




- - -


From above:

Set timestamps for file named "20170710_151341.jpg" to "10.07.2017 15:13:41"


GCI|%{ $BN=$($_.BaseName -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }



 
fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Post by *fgci »

To je ono, ještě jednou děkuji
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

fgci,
Například soubor:
20170710_151341.jpg......................24.08.2017 18:42:12
na soubor s atributy času
20170710_151341.jpg......................10.07.2017 15:13:41
Oznacit subory, potom:
Files - Change Attributes - Change Plugin attributes:
tc - writedate - [=tc.name:7-8].[=tc.name:5-6].[=tc.name:1-4] [=tc.name:10-11]:[=tc.name:12-13]:[=tc.name:14-15]

HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Post by *fgci »

Hacker wrote:tc - writedate - [=tc.name:7-8].[=tc.name:5-6].[=tc.name:1-4] [=tc.name:10-11]:[=tc.name:12-13]:[=tc.name:14-15]
 
Díky moc, takhle jsem původně myslel, že to nějak musí jít v TC.:)
I jsem to zkoušel přes Change Plugin attributes:, ale nepodařilo se mi vytvořit správnou hodnotu zápisu.
Ani vlastně teď, když vyberu v Property: writedate, tak v Choose plugin property mám výběr jen z :
creationdate
writedate
accessdate

ale není ve vlastnostech výběr name:(
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

>>ale není ve vlastnostech výber name

Plugin pracuje s dříve vybranými soubory.





(A pro obecné informace: divize "tc.name" musí mít za následek platnou razítko v každé zemi)





 
fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Post by *fgci »

Stefan2 wrote: Plugin pracuje s dříve vybranými soubory.
 
Mám to takto:
Image: https://postimg.cc/image/9rnqva2pn/
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

1.) "tc.creationdate" provides the current CreationDate time stamp.
Use Hackers' example ([=tc.name:7-8].) instead to build the wanted time stamp from parts of the file name.

2.) Check "[√] Change plugin attributes" too.





 
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

fgci,
není ve vlastnostech výběr name
Nie je, musis to tam napisat rucne.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
fgci
Junior Member
Junior Member
Posts: 14
Joined: 2017-01-24, 07:06 UTC

Post by *fgci »

Hacker wrote: Nie je, musis to tam napisat rucne.
Aha :)
PauloTC
Junior Member
Junior Member
Posts: 2
Joined: 2021-10-01, 21:12 UTC

Re: Zmena atributu datum a cas podle nazvu souboru

Post by *PauloTC »

Pro @Stefan2
Váš skript na změnu atributů funguje naprosto perfektně. Mám, ale velkou prosbu - moje soubory začínají předponou IMG_ tedy: IMG_20211001_232110.jpg Mohl bych Vás poprosit o úpravu, abych to nemusel pracně přejmenovat?
Moc děkuji!
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Zmena atributu datum a cas podle nazvu souboru

Post by *Stefan2 »

2PauloTC

Ahoj a vítej v komunitě


PauloTC wrote: 2021-10-01, 21:25 UTC Pro @Stefan2
Váš skript na změnu atributů funguje naprosto perfektně. Mám, ale velkou prosbu - moje soubory začínají předponou IMG_ tedy: IMG_20211001_232110.jpg Mohl bych Vás poprosit o úpravu, abych to nemusel pracně přejmenovat?
Moc děkuji!

IMG_20211001_232110.jpg


Set timestamps for file named "IMG_20211001_232110.jpg" to "01.10.2021 23:21:10"


Just learn how PowerShell substring works and start from position 4:
Zjistete, jak funguje podretezec PowerShell, a zacnete od pozice 4:

GCI|%{ $BN=$($_.BaseName.Substring(4,15) -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }



- - -


Collection from above:



Set timestamps for file named "20170710_151341 something more here.jpg" to "10.07.2017 15:13:41"

GCI|%{ $BN=$($_.BaseName.Substring(0,15) -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }

- - -

Set timestamps for file named "20170710_151341.jpg" to "10.07.2017 15:13:41"

GCI|%{ $BN=$($_.BaseName -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }



- - -

Code: Select all

GCI|%{ $BN=$($_.BaseName.Substring(4,15) -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }

GCI|%{ $BN=$($_.BaseName.Substring(0,15) -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }

GCI|%{ $BN=$($_.BaseName                 -replace "_",""); $TS=[DateTime]::ParseExact($BN, 'yyyyMMddHHmmss', $null);$_.CreationTime=$TS; $_.LastWriteTime=$TS;$_.LastAccessTime=$TS }
 
Post Reply