commodore.gen.tr

Diğer Nostaljik Bilgisayarlar => IBM Uyumlular / Retro x86 Sistemler => Konuyu başlatan: Arda üzerinde Mayıs 03, 2009, 14:08:11 ÖS



Konu Başlığı: MSDOS batch dosyası hazırlamada yardım!
Gönderen: Arda üzerinde Mayıs 03, 2009, 14:08:11 ÖS
Arkadaşlar, bugün elime biryerden GoodSnes 2.24 geçti, içinde 1861 arşiv içinde paketlenmiş 11337 snes oyunu var. Dosyalar toplamda 30GB gibi bir yer tutuyor olsa da, baktım adamlar akıllıca bir gruplandırma ile bunu 1.7GB'a indirmişler. Her oyun kendi klonları ile birlikte 7z arşivine alınınca bayağı yerden kazanılmış (oyunlar arası fark çok az oluduğu için).

Tabiiki bu fikir güzel, fakat snes emulatorleri 7z dosyalarını okumuyorlar. Komple extract edersem de 30GB gidiyor. Ben de bunları bir script yardımı ile tek tek açarak aynı klasör içinde ayrı ayrı zip dosyaları haline getirdim.

Buraya kadar sorun yok, batch dosyasını hazırlarken bir tek beni deli eden şey string isimlerini manüple etmeye kalktığımda oluyor.

Sadede geleyim. Dosya ismi %%F değişkeninde tutuluyor.

Örnek: "Asameshimae Nyanko.7z"

ben bunun extension'ını atmak istiyorum.

örnek: "Asameshimae Nyanko"



kullandığım script aşağıdadır:

Kod:
@ECHO OFF


REM bat dosyasinin calistigi klasordeki 7z'ler aranıyor
for %%F in (*.7z ) do (

ECHO %%F tekrar sıkıştırılacak...

CLS
REM burada 7z, zip klasoru altina "icerik" olarak açılıyor
"C:\Program Files\7-Zip\7z" x "%%F" -o"zip\%%F icerik"

REM 7zip arsiv icin gecici "icerik" klasör oluşturdu mu kontrol ediliyor...
IF EXIST "zip/%%F icerik" (

REM klasorun icine bos bir klasor olusturuyoruz
REM boylece 7z arsivinin icerigi uygun bir klasorde kalmaya devam ediyor
REM KLASOR ADINI BURADA DUZENLIYORUZ!
REM ****

MKDIR "zip\%%~nF"
REM ****

REM açılmış olan zip dosyasinin diger klasorune giriyoruz
CD "zip\%%F icerik"

REM Klasorun icinde bulunan her dosyayi ayri ayri zipliyoruz
for %%G in (*.*) do (

CLS
"C:\Program Files\7-Zip\7z" a -tzip "../%%~nF/%%~nG.zip" "%%G" -mx5

REM winrar ile ziplemek için "C:\Program Files\WINRAR\winRar" A -afzip "../%%~nF/%%~nG.zip" "%%G" -m5
REM rarlamak için "C:\Program Files\WINRAR\winRar" A -afrar "../%%~nF/%%~nG.rar" "%%G" -m5

)

REM dosyalar ziplendi, klasorden cikalim
CD ..

REM eger kaynak dosyayi silmek isterseniz alttaki satirin rem'ini silin
REM DEL "%%F" /F /Q

REM zipleri olusturdugumuza gore gecici klasoru silebiliriz
RMDIR "%%F icerik" /S /Q

REM hersey bitti 7z klasorune geri cikalim
CD ..

ECHO %%F dosyasi işlendi, devam ediyoruz.
)
)
ECHO Tarama başarıyla tamamlandı.

PAUSE

edit: ozay'ın yardımı ile sorun çözüldüğü için metni çıkardım. script çalışır durumdadır. Her yerde kullandığım sistemin orda çalışmamasının sebebi ~ işaretini unutuyor olmamdı..




Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: EMREZ üzerinde Mayıs 03, 2009, 15:19:32 ÖS
ben hazırladığım boot cdlerine bakayım menu ekleyip menulere isim verip arkada farklı isimde uygulamalar çalıştırıyordu. renkli bar bunun için bir uygulamadan yardım alıyordum sanırım.


Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: Simon (Özay Turay) üzerinde Mayıs 03, 2009, 16:00:05 ÖS
Ben bu problemi daha basit bir şekilde fakat çift dosyaya ayırarak hallettim.

ReCompress.bat
Kod:
@Echo Off
If "%1"=="" Goto Usage
If Not Exist Zip Md Zip
If Not Exist Temp Md Temp

Md Temp\%~n1
7za.exe x "%~n1.7z" -o"Temp\%~n1"
Cd Temp\%~n1
..\..\7za.exe a -tzip "..\..\Zip\%~n1.zip" "*.*" -mx5
Cd ..
Cd ..

Goto End

:Usage
Echo 7z To Zip Converter Utility
Echo Usage: ReCompress FileName
Echo .

:End

ConvertAll.bat
Kod:
@Echo Off
For %%F in (*.7z ) Do Call ReCompress %%F

Komut satırı parametreleri hakkında http://windowsitpro.com/article/articleid/13443/how-do-i-pass-parameters-to-a-batch-file.html (http://windowsitpro.com/article/articleid/13443/how-do-i-pass-parameters-to-a-batch-file.html) adresinden bilgi alabilirsin.

Not: Forum 250KB upload sorunu verdiğinden ve rar dosyalarını kabul etmediğinden rar dosyasının uzantısını zip olarak değiştirdim. Bilginize.


Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: Arda üzerinde Mayıs 03, 2009, 23:36:30 ÖS
ozay cevabın için teşekkür ederim. Lakin birkaç problem var.

1) 7z dosyalarının zip'e dönüştürülmesi değil, 7z içeriğindeki her dosyanın bir bir zipe dönüşümü gerekiyor.

2) yine de her 7z dosyasının içeriği ayrı ayrı ziplenerek 7z dosyası adında bir klasörün içinde tutulacak.

3) yukarıdaki script temp klasörünü boşaltmadığı için çevrim işlemi için devasa bir alana ihtiyaç olacak. (örnek. bendeki 1.6GB'lık arşiv için 45GB alan gerekecek)

4) zaten ben sorunumu başka yöntemlerle çözebildim, benim merak ettiğim MS-DOS'ta string manipülasyonu olayı. Neden bazı durumlarda çalışan
set xxx=%xxx:~0,4%
gibi bir komut benim durumumda %%F değişkenini kesemiyor?

Seninkisinin bir artısı drag-drop desteklemesi :)


Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: ilkergorkem üzerinde Mayıs 04, 2009, 10:36:05 ÖÖ
Name Wizard gibi bir rename programıyla , fazlalıklar atılamaz mı ?


Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: Alpyre üzerinde Mayıs 04, 2009, 10:48:30 ÖÖ
Hey gidi AmigaDOS... Ondan sonra Alpyre MS'e niye her seferinde sayıp sövüyo diye eleştirilir...
:-X


Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: Simon (Özay Turay) üzerinde Mayıs 04, 2009, 11:19:42 ÖÖ
Ehuehueue.

Ana sayfadan senin cevap verdiğini görünce direk anladım böyle birşey diyeceğini. Ama çok haklısın.

Gerçi biraz araştırsak bilmediğimiz özellikler çıkar belki. Mesela ben %~n1 hilesini yeni öğrendim.


Konu Başlığı: Ynt: MSDOS batch dosyası hazırlamada yardım!
Gönderen: Arda üzerinde Mayıs 04, 2009, 19:45:36 ÖS
Ehuehueue.

Ana sayfadan senin cevap verdiğini görünce direk anladım böyle birşey diyeceğini. Ama çok haklısın.

Gerçi biraz araştırsak bilmediğimiz özellikler çıkar belki. Mesela ben %~n1 hilesini yeni öğrendim.

batch işleri hep çok hoşuma gitmiştir, eskiden de severdim lakin :) işte deli olmamak elde..arrrggh.. neyse ama gözümü açtın birden.. scripti düzeltiyorum hemen. Bu arada ileride merak eden olursa diye şurda güzel bir makale var:
http://windowsitpro.com/article/articleid/13443/how-do-i-pass-parameters-to-a-batch-file.html (http://windowsitpro.com/article/articleid/13443/how-do-i-pass-parameters-to-a-batch-file.html)


Name Wizard gibi bir rename programıyla , fazlalıklar atılamaz mı ?

evet ben de öyle yaptım zaten (BRU ile). Fakat burda benim merak ettiğim şey sorunu çözmek değil, msdos batch string'lerinin çalışma şeklini öğrenmekti.