Zmena atributu datum a cas podle nazvu souboru
Moderator: Hacker
Zmena atributu datum a cas podle nazvu souboru
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
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
PowerShell: set timestamp from file name
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:
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
}
Č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 }
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,
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
Oznacit subory, potom: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
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.
Díky moc, takhle jsem původně myslel, že to nějak musí jít v TC.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]

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

Mám to takto:Stefan2 wrote: Plugin pracuje s dříve vybranými soubory.
Image: https://postimg.cc/image/9rnqva2pn/
Re: Zmena atributu datum a cas podle nazvu souboru
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!
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!
Re: Zmena atributu datum a cas podle nazvu souboru
2PauloTC
Ahoj a vítej v komunitě
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 }
- - -
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 }