




Klasördeki Dosyaların Tarihlerini Diğer Klasördeki Farklı Uzantılı Dosyalara Aktarma
-
Epeydir program yazmıyorum 15 sene önce olsa birkaç saatte yapacağım iş de şu anda yapmam epey uzun sürer yıllardır kod yazmıyorum. Başlıktaki işlemi yapabileceğim batch kodu (powershell, cmd, vs), program falan bilen var mı? Fotoğraf makinesiyle raw fotoğraf çekiyorum. Capture one programı ile tüm fotoğrafların ayarlamalarını yapıp farklı bir klasöre jpg olarak kaydediyorum. Captureone'da orjinal dosyanın tarihini koru özelliği yok. arw dosyalarından tarih saat bilgisini okuyup farklı klasördeki aynı isimli jpg dosyalarına yazmam gerek. Çekimi bugün yapıyorum karttan 3-4 gün sonra bilgisayara aktradığımda tarihler 3-4 gün sonrası olmuş oluyor. Hangi mevsimde nerede saat kaçta çekmişim, güneş neredeymiş ya da o mekanda bir çekim kaç saat sürmüş vb şeyler için tarih, saat bilgisi lazım oluyor.
-
https://tools.stefankueng.com/SKTimeStamp.html
Senin sorununu çözmeyebilir ama ben bunu kullanıyorum windows ortamında. Çok dosya işlemem gerkmediği için manuel olarak dosyanın tarihine bakarak değiştirelecek dosyaları seçip hızlı bir şekilde değiştirebiliyorum. Dosya sağ tık özelliklerden timestamp bölümünden bütün dosyaları tek seferde seçip tarih ayarlayabiliyorum.
Çoklu dosya için chatgpt ye konunun başlığını yazdım bir kod öbeği verdi ama denenmesi gerekir :D bakılabilir.
Ya başlıyacağım bu işe kendim yazarım dersen şurası basit iyi bir kaynak gibi https://www.itechtics.com/change-timestamp/
-
hypnot1c bunu yazdı
https://tools.stefankueng.com/SKTimeStamp.html
Senin sorununu çözmeyebilir ama ben bunu kullanıyorum windows ortamında. Çok dosya işlemem gerkmediği için manuel olarak dosyanın tarihine bakarak değiştirelecek dosyaları seçip hızlı bir şekilde değiştirebiliyorum. Dosya sağ tık özelliklerden timestamp bölümünden bütün dosyaları tek seferde seçip tarih ayarlayabiliyorum.
Çoklu dosya için chatgpt ye konunun başlığını yazdım bir kod öbeği verdi ama denenmesi gerekir :D bakılabilir.
Ya başlıyacağım bu işe kendim yazarım dersen şurası basit iyi bir kaynak gibi https://www.itechtics.com/change-timestamp/
Verdiğin linkteki kodlar işime yarayabilir. Python ile falan kolay yapılır ama ben borland zamanında delphi, c++ kodlamıştım. Powershell ile çözemezsem delphi kurup onunla halledeceğim.
-
Robocopy i bir araştır. Yapıyor öyle şeyler...
-
Senin sorununu ExifTool ve powershell cozecek.
Gece hallederim cozen olmaza.
-
Antikky bunu yazdı
Senin sorununu ExifTool ve powershell cozecek.
Gece hallederim cozen olmaza.
Bana da exiftool gibi geldi de batch ile dosya isimlerini alıp uzantıları kendim girmem gerek. Yazarken de okuduğu dosya isminin uzantısını jpg olarak belirleyip yazmak gerek. Powershell'de döngü falan hiç yapmadım hep tek satırlık işlemler yaptım. get-childitem ile dosya listesini txt'e yazdırıp oradan bul değiştir ile satır satır komut ekleyeyim dedim de çok uğraştırıyor yine. Arw uzantılı hafıza kartındaki dosyaların bilgisini okuyup aynı isimdeki ssd'deki klasördeki jpg'lere yazmam gerek.
-
DarkSkull bunu yazdıAntikky bunu yazdı
Senin sorununu ExifTool ve powershell cozecek.
Gece hallederim cozen olmaza.
Bana da exiftool gibi geldi de batch ile dosya isimlerini alıp uzantıları kendim girmem gerek. Yazarken de okuduğu dosya isminin uzantısını jpg olarak belirleyip yazmak gerek. Powershell'de döngü falan hiç yapmadım hep tek satırlık işlemler yaptım. get-childitem ile dosya listesini txt'e yazdırıp oradan bul değiştir ile satır satır komut ekleyeyim dedim de çok uğraştırıyor yine. Arw uzantılı hafıza kartındaki dosyaların bilgisini okuyup aynı isimdeki ssd'deki klasördeki jpg'lere yazmam gerek.
$jpgfolder $rawfolder diye klasorleri onden tanimlayip sonrasinda evet get-childItem icinde -filter ile arw yada jpg olarak filtre yapabilirsin yapmadyi dusundugunden daha kolay.
dedigim gibi gece bakarim... -
Antikky bunu yazdı
$jpgfolder $rawfolder diye klasorleri onden tanimlayip sonrasinda evet get-childItem icinde -filter ile arw yada jpg olarak filtre yapabilirsin yapmadyi dusundugunden daha kolay.
dedigim gibi gece bakarim...Filtreye gerek yok her iki klasörde de farklı uzantıda dosya yok.
Get-ChildItem C:\x\Test\ARW | Select-Object Name, LastWriteTime > C:\x\Test\filelist.txt
bu komutla dosya listesini aldığımda şu çıktıyı veriyor:
DSC06405.ARW 27.11.2024 11:52:20
DSC06406.ARW 27.11.2024 11:52:32Burada bul değiştir ile bunu jpg dosyalarına yazacak komutu da yazdım ama (Get-ChildItem C:\x\Test\JPG\DSC06405.jpg | % {$_.LastWriteTime = ' 27.11.2024 11:52:20'}) windows mal olduğu için dosyadan tarihi bu formatta okudu ama yaz dediğimde bu formatta yazamazsın diyor. 27.11.2024 tarihini 27/11/2024 şekline çevirip yazmam lazım. Bir de bununla uğraşırsam txt'de 5-6 kez bul değiştir yapmam gerekecek. Bu yöntem de amele yöntemi zaten batch yapıp 2 klasörü belirtip döngüyle birinden okuyup diğerine yazmak en mantıklısı. Hatta komut satırına arw klasöründe girip olduğu dizini okutup sadece hedef dizin belirtmek bile yeterli.
-
DarkSkull bunu yazdıAntikky bunu yazdı
$jpgfolder $rawfolder diye klasorleri onden tanimlayip sonrasinda evet get-childItem icinde -filter ile arw yada jpg olarak filtre yapabilirsin yapmadyi dusundugunden daha kolay.
dedigim gibi gece bakarim...Filtreye gerek yok her iki klasörde de farklı uzantıda dosya yok.
Get-ChildItem C:\x\Test\ARW | Select-Object Name, LastWriteTime > C:\x\Test\filelist.txt
bu komutla dosya listesini aldığımda şu çıktıyı veriyor:
DSC06405.ARW 27.11.2024 11:52:20
DSC06406.ARW 27.11.2024 11:52:32Burada bul değiştir ile bunu jpg dosyalarına yazacak komutu da yazdım ama (Get-ChildItem C:\x\Test\JPG\DSC06405.jpg | % {$_.LastWriteTime = ' 27.11.2024 11:52:20'}) windows mal olduğu için dosyadan tarihi bu formatta okudu ama yaz dediğimde bu formatta yazamazsın diyor. 27.11.2024 tarihini 27/11/2024 şekline çevirip yazmam lazım. Bir de bununla uğraşırsam txt'de 5-6 kez bul değiştir yapmam gerekecek. Bu yöntem de amele yöntemi zaten batch yapıp 2 klasörü belirtip döngüyle birinden okuyup diğerine yazmak en mantıklısı. Hatta komut satırına arw klasöründe girip olduğu dizini okutup sadece hedef dizin belirtmek bile yeterli.
" çift tırnak dener misin? bir de 27'nin başında boşluk space var oda etkiliyor olabilir. echo ile bakmakta fayda var UTF-8 gibi character sorunuda çıkarmış olabilir.
{$_.LastWriteTime = " 27.11.2024 11:52:20"})
-
edit
hypnot1c tarafından 28/Kas/24 20:35 tarihinde düzenlenmiştir -
Attığım linke bir bakayım dedim bunun için komut varmış.
https://nircmd.nirsoft.net/clonefiletime.html
Şunu indirdim : https://www.nirsoft.net/utils/nircmd.zip
Çıkartığım dosya yolunda CMD yi açtım. Test ortamı oluşturup test ettim oldu.
for %i in (C:\ARW\*) do (nircmdc.exe clonefiletime "C:\ARW\%~ni.arw" "C:\JPG\%~ni.png")
ARW ve JPG klasörlerin içindeki dosyaların aynı isimle ve aynı sayıda olduğunu faz ederek bunu yazdım.