Jump to content

.bat Dosyası İle İstenilen Dosyalar Haricindekileri Silme


Proctives
 Share

Recommended Posts

Herkese merhabalar, her gün elle yapmak yerine bat dosyasıyla zamanlayıcı kurarak günlük yapmayı istediğim bir problem var. Problemi detaylı olarak açıklamam gerekirse;
1.Ekran görüntüsündeki yeşil alandaki iki klasör ve bir dosya haricinde geri kalan klasör ve dokümanların silinmesini istiyorum. Ortak ağda olduğu için benim yeşil alana aldıklarımın haricinde gün içinde bir çok dosya, klasör veya uygulama ekleniyor. Ben sadece benim istediğim dosyaların ve doküman,uygulamaların kalmasını haricindekilerin silinmesini istiyorum. Bunun haricinde 2.ekran görüntüsünde yine belli bir klasörün içindeki istediğim klasörlerin kalmasını haricindeki her şeyin silinmesini istiyorum. Bunu .bat dosyası halinde derleyip, görev zamanlayıcısıyla günlük olarak çalıştırmak istiyorum. Bunun için gerekli kod satırları konusunda yardımcı olabilecek arkadaşım varsa çok memnun olurum.
 

huepzvo.png
1.EKRAN GÖRÜNTÜSÜ

77nhj65.png

2.EKRAN GÖRÜNTÜSÜ
Link to comment
Share on other sites

  • Editor

Mevcut klasör ve dosya isimlerinde çok fazla boşluk ve Türkçe karakter var...

Şu haliyle bat dosyaları istediğiniz klasör ve dosyaları silemez.

Çünkü betik dosyaları boşluk ve Türkçe karakterleri sevmez :) 

İsimleri boşluk ve Türkçe karakter olmayacak şekilde yeniden düzenleyin ve son halinin ekran görüntülerini burada tekrar paylaşın.

O zaman yaparız bişeyler :) 

Edited by mephistooo2
Link to comment
Share on other sites

  • Editor

Bat dosyası ile boşluk ve Türkçe karakteri sorunlu olduğu için silme işlemi çok zor.

Ancak vbs dosyası ile yapılabiliyor.

Silme işlemi için kodları mesajınızdaki ekran görüntüsüne göre hazırladım.

Dosya ve klasör yollarında bir değişiklik olursa silme işlemi başarısız olacaktır.

Her kod satırının üzerinde açıklama mevcut, siz kendi dosya ve klasör yapınıza göre düzenleme yapmanız gerekebilir.

Aşağıdaki kod satırlarını kopyalayarak bir not defterine yapıştırın ve isminde Türkçe-boşluk karakteri olmadan uzantısı vbs olacak şekilde herhangi bir isimle kaydedin.

NOT: vbs dosyasını görev zamanlamaya eklerken vbs dosyasının bulunduğu klasör isminde Türkçe-boşluk karakteri olmamalıdır.

Spoiler

' Yönetici Hakları etkinleştirilir
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
  WScript.Quit
End If
'=====================================
DIM FSO
SET FSO=CreateObject("Scripting.FileSystemObject")

' Tüm klasör ve dosya yollarında örnek olarak E:\ sürücü harfi girilmiştir.
' Kendi dosya yolunuza göre sürücü harfini değiştirmeniz gerekmektedir.

' İÇTİMA LİSTESİ klasörü silinir
FSO.DeleteFolder "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\İÇTİMA LİSTESİ"


' EKMEK VE PERSONEL YOKLAMASI HAZIR.xml dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\EKMEK VE PERSONEL YOKLAMASI HAZIR.xml"


' YOKLAMA LİSTESİ klasörü silinir
FSO.DeleteFolder "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\YOKLAMA"


' 1 - OCAK 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\1 - OCAK 2021.xlsx"


' 2 - ŞUBAT 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\2 - ŞUBAT 2021.xlsx"


' 3 - MART 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\3 - MART 2021.xlsx"


' 4 - NİSAN 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\4 - NİSAN 2021.xlsx"

 

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

mephistooo2, 15 saat önce yazdı:

Bat dosyası ile boşluk ve Türkçe karakteri sorunlu olduğu için silme işlemi çok zor.

Ancak vbs dosyası ile yapılabiliyor.

Silme işlemi için kodları mesajınızdaki ekran görüntüsüne göre hazırladım.

Dosya ve klasör yollarında bir değişiklik olursa silme işlemi başarısız olacaktır.

Her kod satırının üzerinde açıklama mevcut, siz kendi dosya ve klasör yapınıza göre düzenleme yapmanız gerekebilir.

Aşağıdaki kod satırlarını kopyalayarak bir not defterine yapıştırın ve isminde Türkçe-boşluk karakteri olmadan uzantısı vbs olacak şekilde herhangi bir isimle kaydedin.

NOT: vbs dosyasını görev zamanlamaya eklerken vbs dosyasının bulunduğu klasör isminde Türkçe-boşluk karakteri olmamalıdır.

  İçeriği Gizle


' Yönetici Hakları etkinleştirilir
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
  WScript.Quit
End If
'=====================================
DIM FSO
SET FSO=CreateObject("Scripting.FileSystemObject")

' Tüm klasör ve dosya yollarında örnek olarak E:\ sürücü harfi girilmiştir.
' Kendi dosya yolunuza göre sürücü harfini değiştirmeniz gerekmektedir.

' İÇTİMA LİSTESİ klasörü silinir
FSO.DeleteFolder "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\İÇTİMA LİSTESİ"


' EKMEK VE PERSONEL YOKLAMASI HAZIR.xml dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\EKMEK VE PERSONEL YOKLAMASI HAZIR.xml"


' YOKLAMA LİSTESİ klasörü silinir
FSO.DeleteFolder "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\YOKLAMA"


' 1 - OCAK 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\1 - OCAK 2021.xlsx"


' 2 - ŞUBAT 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\2 - ŞUBAT 2021.xlsx"


' 3 - MART 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\3 - MART 2021.xlsx"


' 4 - NİSAN 2021.xlsx dosyası silinir
FSO.DeleteFile "E:\ORTAK\YAZICI\02 - EKMEK VE PERSONEL YOKLAMASI\1 - EKMEK YOKLAMASI\4 - NİSAN 2021.xlsx"

 

 

İlginiz ve yardımınız için minnettarım. Ancak silinme yerine kalacak dosyaları belirleyen kod parçası daha çok işime yarayacaktır. Çünkü ortak ağda kimin hangi isimde klasör açacağını kestirmem zor, en azından benim belirlediğim haricinde ne varsa silinsin istiyorum.

Link to comment
Share on other sites

mephistooo2, 15 dakika önce yazdı:

Kalacak dosyalar derken?

Silinmemesi gereken dosya-klasörleri kodla belirtemezsiniz, bunu ancak dosya izinleri ile belirtebilirsiniz...

Yani ilk mesajda bahsettiğim mevzu, sadece benim belirlediğim klasörler kalacak. Onun haricinde klasör veya uzantısı ne olursa olsun uygulama direkt silinecek. Sadece adını belirlediklerim kalacak. Bunun PowerShell ve Batch ile mümkün olduğunu biliyorum ama gerekli kod parçalarını yazmakta zorlanıyorum. VBS için bilgim yok tabi, mümkün olmayabilir.

Link to comment
Share on other sites

  • Editor

Ben hala ne demek istediğinizi tam anlayamadım yada ben ne demek istediğimi anlatamadım...

Silinmemesi gereken dosya-klasörleri kodla (bat, cmd, vbs, powershell betik dosyaları ile) belirtemezsiniz, bunu ancak klasör ve dosya izinleri ile ayarlayabilirsiniz...

 

bat dosyası ile dosya-klasör silme işlemleri yapılabilir ancak ilk mesajımda yazdıklarımı dikkate almalısınız...

mephistooo2, 18 saat önce yazdı:

Mevcut klasör ve dosya isimlerinde çok fazla boşluk ve Türkçe karakter var...

Şu haliyle bat dosyaları istediğiniz klasör ve dosyaları silemez.

Çünkü betik dosyaları boşluk ve Türkçe karakterleri sevmez :) 

İsimleri boşluk ve Türkçe karakter olmayacak şekilde yeniden düzenleyin ve son halinin ekran görüntülerini burada tekrar paylaşın.

O zaman yaparız bişeyler :) 

 

Önceki mesajımda hazırladığım vbs betik dosyası mesajınızda belirttiğiniz gibi istediğiniz dosya ve klasörleri siliyor, silinmesini istemediğiniz dosya ve klasörlere dokunmuyor...

Edited by mephistooo2
Link to comment
Share on other sites

mephistooo2, Bir saat önce yazdı:

Ben hala ne demek istediğinizi tam anlayamadım yada ben ne demek istediğimi anlatamadım...

Silinmemesi gereken dosya-klasörleri kodla (bat, cmd, vbs, powershell betik dosyaları ile) belirtemezsiniz, bunu ancak klasör ve dosya izinleri ile ayarlayabilirsiniz...

 

bat dosyası ile dosya-klasör silme işlemleri yapılabilir ancak ilk mesajımda yazdıklarımı dikkate almalısınız...

 

Önceki mesajımda hazırladığım vbs betik dosyası mesajınızda belirttiğiniz gibi istediğiniz dosya ve klasörleri siliyor, silinmesini istemediğiniz dosya ve klasörlere dokunmuyor...

Yardımınız ve ilginiz için minnettarım öncelikle.  Bir arkadaşımın gönderdiği kodla sorunu çözdüm. Konuyu açıklığa kavuşturmak için anlatayım; burada kaynak değişkeniyle klasör hiyerarşisinde en üstteki kökü okuyup, altında silinmesini istemediğim klasörleri tut1 ve tut2 değişkenlerine atamış.Bunun haricindeki tüm dosya,klasör ve uygulamaları da silinmesini sağlamış.

@echo off
set "kaynak=E:\YEDEK"
set "tut1=1 - EKMEK YOKLAMASI"
set "tut2=3 - ICTIMA LISTESI"

cd /d %kaynak%

for /F "delims=" %%G in ('dir /b') do (
    if /I NOT "%%G"=="%tut1%" (
        if /I NOT "%%G"=="%tut2%" (
 
            REM check if it is a directory or file
            IF EXIST "%%G\" (
                rmdir "%%G" /s /q
            ) else (
                del "%%G" /q
            )
        )
    )
)

 

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...