Windows Batch Scripting

Dosya Adı Değiştirme için Toplu İşlem Komut Dosyası

Spread the love

Bu öğretici, bir dizindeki dosya adlarının başından veya sonundan belirli sayıda karakteri kaldırmak için toplu iş komut dosyaları oluşturmayı göstermektedir. Toplu komut dosyası yazımı, Windows’ta dosya yönetimi görevlerini otomatikleştirmek için basit ancak güçlü bir yol sağlar.

İçindekiler

Karakter Kaldırmak İçin Toplu İş Dosyası Oluşturma

Yeni bir metin dosyası oluşturarak (örneğin, Not Defteri kullanarak) ve .bat uzantısıyla (örneğin, rename_files.bat) kaydederek başlayın. Bu dosya, toplu iş komut dosyası yönergelerini içerecektir.

Komut dosyamızın özünü, %variable:~start,length% sözdizimini kullanan Windows komut yorumlayıcısının dize manipülasyon yetenekleri oluşturur. Bu, bir değişkenden alt dize ayıklar. start başlangıç konumudur (0 tabanlı indeks) ve length ayıklanacak karakter sayısıdır. Negatif bir start değeri dizenin sonundan sayar.

Dosya Adlarının Sonundan Karakter Kaldırma

Bir dizindeki tüm .txt dosyalarının son 3 karakterini kaldırmayı gösterelim:

@echo off
setlocal

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~0,-3!"
  if "!newfilename!"=="" (
    echo %%a atlanıyor: Dosya adı çok kısa.
  ) else (
    ren "%%a" "!newfilename!"
  )
)

endlocal

Bu gelişmiş komut dosyası, 3 karakterden daha kısa dosya adlarıyla ilgili sorunları önlemek için hata işleme içerir.

  • @echo off: Komut yankılanmasını bastırır.
  • setlocal: Değişkenleri izole eden yerel bir ortam oluşturur.
  • for %%a in (*.txt) do (...): .txt dosyaları arasında yineleme yapar.
  • set "filename=%%a": Dosya adını bir değişkene atar (tırnak işaretleri boşlukları ele alır).
  • set "newfilename=!filename:~0,-3!": Alt dizeyi (son 3 karakter hariç tümü) ayıklar.
  • if "!newfilename!"=="" (...): Boş dosya adlarını kontrol eder ve atlar.
  • ren "%%a" "!newfilename!": Dosyayı yeniden adlandırır (tırnak işaretleri boşlukları ele alır).
  • endlocal: Yerel ortamı sonlandırır.

Dosya Adlarının Başından Karakter Kaldırma

Baştan karakterleri kaldırmak için alt dize çıkarma işlemini değiştirin. Örneğin, ilk 5 karakteri kaldırmak için:

@echo off
setlocal

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~5!"
  ren "%%a" "!newfilename!"
)

endlocal

Burada, ~5 çıkarma işlemine 6. karakterden (indeks 5) başlar ve ilk 5 karakteri etkili bir şekilde kaldırır.

Hatalar ve Özel Durumlar ile Baş Etme

Yukarıdaki geliştirilmiş komut dosyası, belirtilen kaldırma uzunluğundan daha kısa dosya adları için bir kontrol içerir. Bu, hataları ve beklenmedik davranışları önler. Daha sağlam hata işleme için, üzerine yazmayı önlemek için yeni adlarla mevcut dosyalar için kontroller ekleyebilirsiniz.

Gelişmiş Kullanım: Değişken Karakter Kaldırma

Değişken sayıda karakter kaldırmak için, sayıyı tanımlamak üzere değişkenler kullanın. Kullanıcıdan giriş isteyebilirsiniz:

@echo off
setlocal

set /p "charsToRemove=Kaldırılacak karakter sayısını girin: "

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~%charsToRemove%!"
  ren "%%a" "!newfilename!"
)

endlocal

Beklenmedik sonuçları önlemek için kullanıcı girişini doğrulamayı unutmayın.

Sonuç

Bu kılavuz, dosya adlarından karakter kaldırmak için toplu iş komut dosyaları oluşturmayı gösterdi. Bu tür komut dosyalarını çalıştırmadan önce her zaman dosyalarınızın yedeğini alın. Dosya uzantılarını, karakter sayılarını ve hata işlemeyi ayarlayarak bu komut dosyalarını özel ihtiyaçlarınıza göre uyarlayın.

SSS

  • S: Dosya adlarımda boşluklar varsa ne olur? C: ren komutundaki dosya adlarının etrafındaki tırnak işaretleri, boşlukların doğru şekilde işlenmesi için çok önemlidir.
  • S: Değişken sayıda karakter kaldırabilir miyim? C: Evet, gelişmiş kullanım bölümünde gösterildiği gibi.
  • S: Dosya adı, kaldırmak istediğim karakter sayısından daha kısa ise ne olur? C: Geliştirilmiş komut dosyaları, kısa dosya adlarını atlayarak bunu ele alır.
  • S: Bunu diğer dosya türlerinde kullanabilir miyim? C: Evet, for döngüsündeki *.txt‘yi istenen joker karakterle değiştirin (örneğin, tüm dosyalar için *.*).

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir