Anasayfa » Batch Dosyası ile Dosya Sıkıştırma ve Silme İşlemleri

Makaleyi Paylaş

3. Parti Yazılımlar

Batch Dosyası ile Dosya Sıkıştırma ve Silme İşlemleri

Merhaba, son makalelerimde biraz son kullanıcı işletim sistemlerinde kullanılan işlevlere yöneldim. Bunun temel nedeni geniş kitleler tarafından sorgulanan konular olması. Bu makalemizde ise script ile dosya sıkıştırma ve silme işlemleri yapacağız. Sonrasında bu işlemleri zamanlanmış bir göreve bağlayarak otomatize edeceğiz.

Biz senaryomuzda bir klasörümüzdeki dosyaları, farklı bir sürücü içinde bulunan klasör içene sıkıştırma işlemi yapacağız. Sonrasında sıkıştırılan klasör ve dosyaları siliyor olacağız. Adımlarımıza geçelim.

D: sürücümüz içerisinde Test isimli bir klasörümüz var.

Klasör içerisinde klasör ve dosyalar mevcut.


E:\ sürücümüz üzerinde yine Test_Backup isimli boş bir klasörümüz var.

Sıkıştırma işlemlerini Winrar scripti kullanarak yapacağız. Programımız aşağıda görüldüğü gibi kurulu durumda.

Öncelikle işlemlerimizi komut satırı üzerinden test ederek çalıştıralım ve sonrasında bunu script haline getireceğiz.

CMD üzerinden Winrar programımızın kurulu olduğu dizine girelim.

Sıkıştırma için aşağıdaki komut setini kullanmamız gerekmekte.

rar a  -r “E:\SIKIŞTIRMA HEDEFİ\DOSYA İSMİ%DATE:~7,2%-%DATE:~4,2%-%DATE:~-4%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~-5,2% .rar”  “D:\SIKIŞTIRILACAK KAYNAK”

Bizim klasörlerimize göre yorumlayarak olursak komut aşağıdaki gibi oluyor.

rar a  -r “E:\Test_Backup\Yedek_Log_%DATE:~7,2%-%DATE:~4,2%-%DATE:~-4%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~-5,2% .rar”  “D:\Test”

Burada birçok parametremiz var. Bunlar Winrar programının kullandığı parametreler. Bu nedenle Winrar parametrelerinin tamamını aşağıda paylaşıyorum. Command promt üzerinde winrar dizininde C:\Program Files\Winrar\rar ? komutu ile zaten tüm parametreleri görmeniz mümkün. Ben temel kullanılan parametreleri paylaşıyor olacağım.

ParametreAçıklama
aDosyaları arşive ekle
cArşive açıklama ekle
chArşiv parametrelerini değiştir
cwArşiv açıklamasını dosyaya yaz
dDosyaları arşivden sil
eDosyaları arşiv yolları olmaksızın çıkart
fArşivdeki dosyaları tazele
i[par]=<diz> Arşivlerde dizi bul
kArşivi kilitle
l[t[a]b]Arşiv içeriğini listele [teknik[tümü]
m[f]         Arşive taşı [sadece dosyalar]
pDosyayı standart çıkış (stdç)’a yaz
rArşivi onar
rcEksik ciltleri tekrar yapılandır
rnArşivlenmiş dosyaları yeniden adlandır
rr[N]        Veri kurtarma kaydı ekle
rv[N]        Kurtarma ciltleri oluştur
s[ad|-]      Arşivi SFX’e veya SFX’den dönüştür
tArşivlenmiş dosyaları test et
uArşivdeki dosyaları güncelle
v[t[a]b]Arşivi ayrıntılı olarak listele [teknik[tümü]
xDosyaları tam yol adıyla çıkart

Yukarıdaki komuttan setinden sonra belirlediğimiz klasör içerisinde yer alan klasör ve dosyalarımız hedef dizine arşivlendi. İşlemlerin sorunsuz olarak yapıldığını dosyaların sonunda yer alan Tamam ibaresinden görebiliyoruz.

Winrar ile belirlediğimiz dizindeki dosyaların hedef dizin üzerine arşivlendiğini aşağıda görebiliyoruz.

Arşiv dosyamızı çift tıkladığımızda içeriğinin sorunsuz olduğunu görebiliyoruz.

Şimdi Arşivlenen Klasör içerisindeki dosyalarımızı silelim. Ben bilerek işlemleri farklı komut setleri kullanarak uzatıyorum. Bunun nedeni farklı komutları görerek örnekleri çoğaltmak. Scrit yazma konusunda herkesin yoğurt yeme yöntemi farklı olabilir. Scriptler basma kalıp tek düze değildir. Kodu yazan dileği şekilde esnetip bükebilir. Ben aşağıdaki komutlarla dilinecek klasörü bir değişkene atayıp, değişken içerisine girdikten sonra silme işlemini yapıyorum.

set folder=”D:\Test”

cd /d %folder%

del /S /Q *.*

Silme işlemi tamamlandı fakat dosyalar silinmiş ama klasörler kalmış. Örneği farklılaştırmak adına değişik komutlar kullanıyoruz. Del komutu dosyaları siler biz klasörleri kullanmak için farklı komut kullanacağız. Komuttan sonda durum aşağıdaki gibi.

Aşağıdaki komut setimiz ile klasörleri silelim. RD komutu klasör silmekte kullanılır.

rd /S /Q “C:\Test\Tools”

rd /S /Q “C:\Test\Winscp”

Komutumuzun çıktısı aşağıdaki gibidir. Bu işlemden sonra klasörlerde silinmiş oldu.

Şimdi bu komutların hepsini bir bat dosyası içerisinde toplayarak tüm işlemleri tek seferde yapalım. Ben silmiş olduğum dosyaları tekrardan testlerimizi yapabilmek için aynı klasöre kopyalıyorum.

Aşağıda olduğu gibi komutlarımızı tek bir notepad içerisine yazıyorum.

C:

cd\

cd C:\Program Files\WinRAR

rar a  -r “E:\Test_Backup\Yedek_Log_%DATE:~7,2%-%DATE:~4,2%-%DATE:~-4%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~-5,2% .rar”  “D:\Test”

set folder=”D:\Test”

cd /d %folder%

del /S /Q *.*

rd /S /Q “C:\Test\Tools”

rd /S /Q “C:\Test\Winscp”

exit

Dosyamızın uzantısını bat olarak değiştirelim gelen uyarıyı Evet ile geçelim.

Batch dosyamızı hazırladık. Şimdi sıra bunu zamanlanmış bir göreve bağlayarak belirlenen zamanda otomatik olarak işlem yaptıracağız. Bu işlem benim aşırı log üreten bir sistemim için gerekli oldu. Şimdi bu yöntemle günü geçen önemsiz loğları sıkıştırıp farklı bir dizin üzerine alıyorum. Yeni loğların yazılması için eski loğları siliyorum. Bu tarz komutlar hayatımızı kolaylaştırabiliyor. Bunu zamanlanan göreve bağlamak ise iş yükümüzü alıp sadece kontrol ederek işimizi görmemize yarıyor. Görev Zamanlayıcı’yı açalım.

Açılan ekranımızda Görev Zamanlayıcı’ya sağ tıklayarak açılan menüden Temel Görev Oluştur… kısmını tıklayalım.

Görevimize biri isim ve açıklama yazıp İleri butonu ile sonraki adıma geçelim.

Görev zaman periyodunu seçelim ben bu işlemi günlük olarak yapacağım için Günlük seçimini yaparak İleri butonuna tıklayıp sonraki adıma geçiyorum.

İşlemin zamanını seçip günde kaç kez çalışacağına dair periyodu bu ekrandan belirleyebiliriz. Biz gece yarısı sadece bir kez çalışacak bir görev olduğu için aşağıdaki gibi ayarları yapıp İleri butonu ile sonraki adıma ilerliyoruz.

Bir bu görevde bir eylem türü olarak Program başlat seçimini yaparak İleri butonu ile sonraki adıma geçelim.

Gözat… butonuna tıklayarak çalıştırılacak olan Batch dosyamızı gösterelim.

Dosyamızı seçerek butonuna tıklayalım.

Dosyamız seçildi. Bu ekranda çalışacak olan program veya dosyaya desteklemesi durumunda özel bir parametre tanımı yapabiliriz. Biz parametre kullanmayacağız İleri butonuna tıklayarak sonraki adıma geçebiliriz.

Oluşturulacak olan Görevin bir özeti karşımıza geldi. Son butonuna tıklayarak görevimizi oluşturalım.

Görevimiz konsolda diğer görevlerin arasına  eklendi.

Görevin çalışıp çalışmadığından emin olmak için görevimiz seçili durumdayken Çalıştır butonuna tıklayalım.

Görevimiz çalıştı mevcut olan dosyalar sıkıştırılarak belirlediğimiz dizine taşındı ve sonrasında silindi.

Belirlediğimiz dizine arşivlenmiş olan dosyayı görebiliyoruz.

Umarım yararlı olur. Bir başka makalede görüşmek dileğiyle.

Makaleyi Paylaş

www.rizasahan.com

7 Yorum

  1. Eline sağlık Rıza.

    Cevapla
  2. Elinize sağlık.Güzel bir makale olmuş.

    Cevapla
  3. Eline sağlık Rıza. Çok yararlı olacak bir yazı.

    Cevapla
  4. Ellerinize sağlık bir çok alanda ihtiyaç olacak işlem, burada Winrar yerine neden 7zip tercih etmediniz?. Umarım daha güçlü sıkıştırma işlemlerini de yönelip bizi aydınlatırsınız. Örneğin 1,5GB lık verileri üst düzey sıkıştırıp 200-300MB boyutlara kadar indirmek, dosya türlerine video, resim, müzik dahil olmak üzere.

    Cevapla
  5. Elinize sağlık , yararlı bir makale olmuş.

    Cevapla
  6. Rıza Bey, çok detaylı ve harika bir anlatım olmuş. Çok özen göstermişsiniz. Emeğinize sağlık.

    Cevapla
  7. Elinize sağlık Rıza bey,

    Benim bu konuda bir sorum olacak buradan yanıtlarsanız herkese faydalı olacağını umuyorum.
    Bu yedek alınan klasörün içerisinden çok fazla sayıda alt dizin varsa ve uzun dosya adları içeriyorsa
    rd /S /Q “C:\Test\Tools”
    rd /S /Q “C:\Test\Winscp”

    komutları hata verir, bunun önüne geçmek için biraz araştırdım ama hiçbirisi batch dosya içinden çözüm olmadı .

    sizin bu konuda düşünceniz nedir, nasıl o dizinler ve dosyalar yedekleme sonrası uçurulur ?

    Cevapla

Cevap bırakın

Email adresiniz gizli kalacak Zorunlu alanlar * olarak işaretlenmiştir

Bunları kullanabilirsinizHTML etiketler ve öznitelikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>