Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriGenel SohbetMSDOS batch dosyası hazırlamada yardım!
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: MSDOS batch dosyası hazırlamada yardım!  (Okunma Sayısı 4138 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« : 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ı..


« Son Düzenleme: Mayıs 04, 2009, 19:49:48 ÖS Gönderen: Arda » Logged

EMREZ
Deneyimli
*****
Mesaj Sayısı: 1.654



Üyelik Bilgileri
« Yanıtla #1 : 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.
Logged

this is amiga speaking.
Simon (Özay Turay)
Genel Yönetici
*****
Mesaj Sayısı: 6.055


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #2 : 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 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.

* 7zToZip.zip (238.31 KB - Yükleme: 165 kez.)
« Son Düzenleme: Mayıs 03, 2009, 16:05:50 ÖS Gönderen: ozayturay » Logged

http://www.retrodergi.com - http://www.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PSP Slim, Nintendo DS Lite
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #3 : 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
Logged

ilkergorkem
Üye
***
Mesaj Sayısı: 179



Üyelik Bilgileri
« Yanıtla #4 : Mayıs 04, 2009, 10:36:05 ÖÖ »

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

ZX Spectrum 48K+ , Amiga 1200 , ZX Spectrum +2 , Amstrad 6128
---------------
7D9 Oyun Yarışması 2.si Board Soccer
7DX Oyun Yarışması 3.sü Run Baby Run
7DX 2013 Oyun Yarışması 3.sü Falcon Patrol
Alpyre
Uzman
*****
Mesaj Sayısı: 2.215



Üyelik Bilgileri WWW
« Yanıtla #5 : 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...
Sustum
Logged

Alper
Simon (Özay Turay)
Genel Yönetici
*****
Mesaj Sayısı: 6.055


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #6 : 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.
Logged

http://www.retrodergi.com - http://www.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PSP Slim, Nintendo DS Lite
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #7 : 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


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.

« Son Düzenleme: Mayıs 04, 2009, 19:52:45 ÖS Gönderen: Arda » Logged

Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: