- Mesaj
- 12
- Beğeni
- 17
- Puan
- 405
- Ticaret Puanı
- 0
Merhaba,
Marty Sama 5.8 altyapısını kullanarak, Metin2'nin kronolojsinin dışına çıkmadan 24.02.2010 tarihindeki grafik güncellemesinin hemen öncesini hedeflediğim bir altyapı üzerinde çalışıyorum. Pack dosyalarının içeriklerini çok fazla veriden arındırmanın uzun süreler alacağını bildiğim için, belli bir pack dosyasının içeriğini (uzantıdan bağımsız olarak yalnızca klasör yoluna bağlı dosya isimleri) referans alıp hedeflediğim pack dosyasıyla eşleştirecek ve eşleşmeyen tüm dosyaları ya da dosyalar ile birlikte boş klasörleri silecek basit birer python betiği yazdım. İşinize yarayabileceğini düşündüğüm için paylaşmak istedim.
"source_folder" değişkeni referans alınacak pack yolunu temsil eder. Örneğin, 18.05.2010 tarihli türkiye clientine ait pack dosyalarını referans alabilirsiniz. "target_folder" değişkeni ise referans aldığınız dosyalara göre temizlenecek pack yolunu temsil eder. Marty Sama'nın 22.5.7.0 sürümlü clientine ait pack dosyalarını temizlemek isteyebilirsiniz. Bu işlemi yapmadan önce lütfen dosyalarınızı yedekleyin. Dosya yolları bire bir uyuşmazsa betik pack içeriğini tamamen silebilir.
locale_uk (2007) referans alınarak locale_tr (2010) pack dosyası için öncesi,
Pack Cleaner (Without folders).py kullanılarak yapılan temizleme sonrası,
Pack Cleaner.py kullanılarak yapılan temizleme sonrası,
Marty Sama 5.8 altyapısını kullanarak, Metin2'nin kronolojsinin dışına çıkmadan 24.02.2010 tarihindeki grafik güncellemesinin hemen öncesini hedeflediğim bir altyapı üzerinde çalışıyorum. Pack dosyalarının içeriklerini çok fazla veriden arındırmanın uzun süreler alacağını bildiğim için, belli bir pack dosyasının içeriğini (uzantıdan bağımsız olarak yalnızca klasör yoluna bağlı dosya isimleri) referans alıp hedeflediğim pack dosyasıyla eşleştirecek ve eşleşmeyen tüm dosyaları ya da dosyalar ile birlikte boş klasörleri silecek basit birer python betiği yazdım. İşinize yarayabileceğini düşündüğüm için paylaşmak istedim.
Pack Cleaner.py:
import os
def get_file_paths(folder_path):
file_paths = set()
for root, dirs, files in os.walk(folder_path):
for file in files:
relative_path = os.path.relpath(os.path.join(root, file), folder_path)
file_paths.add(relative_path.lower())
return file_paths
def delete_unmatched_files(source_folder, target_folder):
source_file_paths = get_file_paths(source_folder)
for root, dirs, files in os.walk(target_folder):
for file in files:
relative_path = os.path.relpath(os.path.join(root, file), target_folder)
if relative_path.lower() not in source_file_paths:
file_path = os.path.join(root, file)
print(f"Deleted: {file_path}")
os.remove(file_path)
delete_empty_folders(target_folder)
def delete_empty_folders(folder_path):
for root, dirs, files in os.walk(folder_path, topdown=False):
for dir in dirs:
dir_path = os.path.join(root, dir)
if not os.listdir(dir_path):
print(f"Empty folder deleted: {dir_path}")
os.rmdir(dir_path)
if __name__ == "__main__":
source_folder = r"C:\Users\User\Desktop\Metin2_TR_20100518\pack\pc"
target_folder = r"C:\Users\User\Desktop\S3llMetin2-v22.5.7.0\pack\pc"
delete_unmatched_files(source_folder, target_folder)
Pack Cleaner (Without folders).py:
import os
def get_file_paths(folder_path):
file_paths = set()
for root, dirs, files in os.walk(folder_path):
for file in files:
relative_path = os.path.relpath(os.path.join(root, file), folder_path)
file_paths.add(relative_path.lower())
return file_paths
def delete_unmatched_files(source_folder, target_folder):
source_file_paths = get_file_paths(source_folder)
for root, dirs, files in os.walk(target_folder):
for file in files:
relative_path = os.path.relpath(os.path.join(root, file), target_folder)
if relative_path.lower() not in source_file_paths:
file_path = os.path.join(root, file)
print(f"Deleted: {file_path}")
os.remove(file_path)
if __name__ == "__main__":
source_folder = r"C:\Users\User\Desktop\Metin2_20070608\pack\pc"
target_folder = r"C:\Users\User\Desktop\S3llMetin2-v22.5.7.0\pack\pc"
delete_unmatched_files(source_folder, target_folder)
"source_folder" değişkeni referans alınacak pack yolunu temsil eder. Örneğin, 18.05.2010 tarihli türkiye clientine ait pack dosyalarını referans alabilirsiniz. "target_folder" değişkeni ise referans aldığınız dosyalara göre temizlenecek pack yolunu temsil eder. Marty Sama'nın 22.5.7.0 sürümlü clientine ait pack dosyalarını temizlemek isteyebilirsiniz. Bu işlemi yapmadan önce lütfen dosyalarınızı yedekleyin. Dosya yolları bire bir uyuşmazsa betik pack içeriğini tamamen silebilir.
locale_uk (2007) referans alınarak locale_tr (2010) pack dosyası için öncesi,
Pack Cleaner (Without folders).py kullanılarak yapılan temizleme sonrası,
Pack Cleaner.py kullanılarak yapılan temizleme sonrası,