Forum

Bat dosyası ile rev...
 
Bildirimler
Hepsini Temizle

[Çözüldü] Bat dosyası ile revizyon uygulaması hakkında yardıma ihtiyacım var

5 Yazılar
3 Üyeler
0 Reactions
655 Görüntüleme
(@cemojr)
Gönderiler: 4
Active Member
Konu başlatıcı
 

Merhaba Üstatlarım,

 

Firmalarımızın birisinde arge ekibi için bir bat dosyası geliştirmeye çalışıyorum. 

 

Bu bat dosyasından beklentim dosyayı belirli bir konuma "C:/Autocad_yedek/" kopyalaması ve sonra adının sonuna dosyaadi_rev1.dwg dosyaadi_rev2.dwg şeklinde her revize yap dediğimde kopyalayıp rakamı bir arttırması. 

 

Bir kaç kod yazdım bunu Sağ Tık menüsüne Revize Yap olarak ekledim her şey güzel derken, Sağ tıklayıp "Revizyon Yap" dediğim zaman sağ tıkladığım dosyanın konumunu algılayamıyor. Haliyle de sistem dosya yolunu bulamadı şeklinde hata veriyor. 

 

Bunu nasıl sağlayabilirim. 

 

Benim için hayati önem taşıyan bir konu kendisi. 

 
Gönderildi : 13/04/2023 14:30

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33311
Illustrious Member Yönetici
 

Dosya yolunu bulamama hatası, muhtemelen dosyanın konumunu doğru şekilde belirtmediğinizden kaynaklanmaktadır.

Dosyanın bulunduğu klasör yolunu otomatik olarak bulmak için "%~dp0" kullanabilirsiniz. Bu, bat dosyasının bulunduğu klasör yolunu belirtir. Böylece, kopyalama işlemini yapmak istediğiniz klasör yolunu "%~dp0C:/Autocad_yedek/" şeklinde belirtebilirsiniz.

Revize yapmak için dosya ismini almanız ve ismin sonuna revizyon numarasını eklemeniz gerekecektir. Bunun için "for" döngüsü kullanabilirsiniz. Örneğin, aşağıdaki kod, belirtilen klasöre dosyayı kopyalar ve dosya adının sonuna revizyon numarasını ekler:

setlocal enabledelayedexpansion
set /a count=1
for %%a in ("%~dp0*.dwg") do (
set "name=%%~na"
set "ext=%%~xa"
copy "%%a" "C:/Autocad_yedek/!name!_rev!count!!ext!"
set /a count+=1
)

Bu kod, belirtilen klasöre ".dwg" uzantılı tüm dosyaları tarar ve her dosya için kopyalamayı yapar. Dosya adı ve uzantısını ayrı ayrı ayarlamak için "name" ve "ext" değişkenlerini kullanır. "Count" değişkeni, her revizyon için bir artışa sahip olarak dosya adının sonuna eklenen sayıdır.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 13/04/2023 16:35

ibrahim yildiz
(@ibrahimyildiz)
Gönderiler: 4563
Co-Helper
 

Ek olarak win'a bir şey ekliyorsanız bunun Path tanımları içinde de olması gerekir.

'balık vermez, nasıl tutulabildiğine yönlendirir'
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız. Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz. Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 13/04/2023 16:58

(@cemojr)
Gönderiler: 4
Active Member
Konu başlatıcı
 

Merhaba,

Yardımlarınız için çok teşekkür ederim. Tüm sorunları çözdüm path bilgilerinde vs sorun yok şuanda. 

 

Şimdi ARGE klasörümde binlerce çizim tasarım var. İstediğim şey sağ tık revizyon yap denildiği zaman dosyanın sonunda -r%% gibi bir argüman olup olmadığını kontrol ettirip yoksa dosya adının sonuna -r01 ekletmek. Eğer varsa -r01 için count sayısını bir arttırmak istiyorum. Dünden beri yaklaşık olarak 30 farklı script yazdım fakat bir türlü rakamı arttıramadım. Arttırmayı başarsam bile filename-r01.dwg olan dosya adı filename-r01-r02.dwg olarak devam ediyor. Tek istediğim şey sağ tık revizyon yap dediğim zaman bat dosyasının dosya isminin sonundaki ibareyi kontrol etmesi yoksa -r01 den başlatması veya varsa -r01 -r02 şeklinde sürekli bir arttırarak devam etmesi. Son rakam 99 olabilir sonrasında count sıfırlanabilir bunların bir önemi yok sadece çalışmasına ihtiyacım var şuanda 

 

Edit: Regedit üzerinde target subject olarak %1 kullanıyorum. %1 argümanını koyduğunuz yerde direkt olarak sağ tıkladığım dosyayı seçecektir. İsimler belirli bir düzende değil bu yüzden son 4 karakteri kontrol etmek daha mantıklı geliyor fakat kodunu bulamadım. 

Bu ileti 2 yıl önce Cemal ÇELIK tarafından düzenlendi
 
Gönderildi : 14/04/2023 08:12

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33311
Illustrious Member Yönetici
 

Merhaba, konu çok kişisel bir istek olduğu benim konuya son yanıtım aşağıdaki gibi olup bundan sonrası için bir yazılım uzmanından gerekir ise danışmanlık alın derim.

@echo off
setlocal enabledelayedexpansion

set "filename=%~n1"
set "ext=%~x1"

rem Son 4 karakteri kontrol etmek için:
set "rev=!filename:~-4!"

rem Eğer dosya adında "-r" ifadesi yoksa, "-r01" ile başlat:
if not "!rev!" == "-r" (
set "filename=!filename!-r01"
) else (
rem Dosya adında "-r" ifadesi varsa, son rakamı arttır:
set "lastrev=!filename:~-2!"
set /a "newrev=lastrev+1"

rem Yeni revizyon sayısını 2 basamaklı hale getir:
if !newrev! lss 10 set "newrev=0!newrev!"

rem Dosya adını güncelle:
set "filename=!filename:~0,-2!-r!newrev!"
)

rem Dosya adı + revizyon sayısı + uzantı şeklinde tam adı oluştur:
set "newfilename=!filename!!ext!"

rem Dosyayı kopyala:
copy "%1" "C:\Autocad_yedek\!newfilename!"

echo "Dosya başarıyla kopyalandı ve revize edildi: !newfilename!"
pause

Bu kodda, dosya adı ve uzantısı ayrı değişkenlere atanıyor ve son 4 karakteri !filename:~-4! komutu ile alınıyor. Eğer dosya adında "-r" ifadesi yoksa, dosya adının sonuna "-r01" ekleniyor. Eğer dosya adında "-r" ifadesi varsa, son iki rakam alınıp bir arttırılıyor ve yeni revizyon sayısı iki basamaklı hale getiriliyor. Dosya adı, yeni revizyon sayısı ve uzantı birleştirilerek yeni dosya adı oluşturuluyor. Son olarak copy komutu ile dosya belirtilen klasöre kopyalanıyor.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 14/04/2023 11:07

Paylaş: