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:
@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ı..