[Riješeno] Kako umnožiti jednu sliku i preimenovati u više slika sa pop

1

[Riješeno] Kako umnožiti jednu sliku i preimenovati u više slika sa pop

offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

Napisano: 15 Okt 2010 12:22

Nisam programer pa ni ne znam postoji li uopće mogućnost ili program za ovo što trebam. Našao sam nešto ovdje ali s obzirom na programiranje ne snalazim se

Imam dva foldera A i B.

Folder "C:\Tmp\A"
U folderu A imam neke fajlove tipa *.png (može biti i *.jpg). Također u folderu A imam subfoldere u kojima se nalaze ostale *.png

Folder " C:\Tmp\B"
U folderu B imam jednu datoteku koja je osnova za kopiranje a naziv joj je "slika.png"

Želio bi kopirati iz A u B sve slike (također iz subfoldera) i automatski ih preimenovati ali da budu identične kao slika.png. Naravno i nazivi moraju biti identični (velika/mala slova)

IMAM




TREBA MI




Ova situacija nije striktna.
Može i pomoću fajla koji sadrži popis naziva u koje treba preimenovati. npr: popis.txt

U folderu A imam fajl sa popisom tj. nazivima datoteka kojeu konačnici trebaju biti,
U folderu B imam slika.png (a može biti i u foldera "A")

Laički rečeno, program bi trebao pogledati u "popis.txt" i fajl "slika.png" umnožiti prema popisu. Ako bi još mogao to odraditi i za subfoldere to bi bilo super (u tom slučaju u svakom subfolderu bi se opet nalazio popis,txt a i ne mora, može kompletan popis biti u jednom.

Ako je potrebno u popis.txt mogu se nalaziti path staze za destinaciju umnoženih slika
(npr: C:\Tmp\B\ostale\row.png)







I na kraju da ne bi bilo nešto nejasno pokušat ću laičkim jezikom pojasniti.

BATCH skripta bi trebala odraditi slijedeće:
Pogledati u folder (ili popis.txt) sve nazive fajlova. Fajl pod nazivom slika.png kopirati na neku destinaciju i preimenovati u prvi naziv kada završi radnju opet pogledati u popis.txt i fajl pod nazivom slika.png kopirati na istu destinaciju i preimenovati ovaj puta nazivom koji je drugi po redu i tako redom treći, četvrti naziv do kraja. (ako je potrebno popis.txt može sadržavati destinacijsku path stazu ili neku kombinaciju a i ne mora)

npr:
row.png => copy slika.png to C:\Tmp\B\ostale\ and rename to row.png

Nije bitno kakav raspored će biti, sve u jednom folderu ili u dva foldera, važan je krajnji rezultat i može li se uraditi po ovom pitanju?
btw: Ima li kakav program ili BATCH skripta za ovo? ili možda tražim neizvedivo? ;-)

Dopuna: 15 Okt 2010 19:14

Uspio sam riješiti upravo pomoću navedenog linka gore
Samo je trebalo posložiti sve stvari na svoje mjesto Smile

Problem riješen pomoću datoteke "popis.txt"

Kod za BATCH file je
setlocal EnableDelayedExpansion cd C:\Tmp\A SET source_file=%1 SET name_list_file=%2   FOR /F "usebackq delims=," %%G IN (`TYPE %name_list_file%`) DO (     COPY %source_file% %%G )

Jedini problem mi je što ne mogu i za subfoldere. Ako netko zna bilo bi dobra ušteda vremena



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Napisano: 19 Okt 2010 12:25

Nisam baš siguran da u potpunosti razumem (iako si napisao informativni post Wink što znači da je do mene), probaj sa ovim:
SET source_file=%1 SET name_list_file=%2   FOR /R %%D in (.) do (    FOR /F "usebackq delims=," %%G IN (`TYPE %name_list_file%`) DO (        COPY %source_file% %%~sD\%%G    ) )
Skripta će kopirati izvorni fajl u sve pod-foldere preko imena iz fajla "source_file".

Dopuna: 19 Okt 2010 14:55

Malo sam pažljivije pročitao post. Ako ne grešim ovo bi trebalo da je to što tražiš:

setlocal EnableDelayedExpansion @echo off SET source_file=%1 SET name_list_file=%2 SET odrediste=B   FOR /F "tokens=*" %%D in ('dir /b/a/s A\*') do (    set fajl=%%~nxD%    FOR /F "usebackq delims=," %%G IN (`TYPE %name_list_file%`) DO (       IF "!fajl!"=="%%G" ( COPY %source_file% %odrediste%\%%G )    ) )
Dakle skripta izlistava se folder "A" i sve ispod njega (pod-folderi), i ako postoje fajlovi u njima koji se nalaze na listi onda te fajlove kopiramo u odredište "B", sa sadržajem fajla "%source_file%".

Naravno skriptu pokrećeš sa:
rep.bat sourcefajl.jpg replace.txt



offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

@soxxx
Nažalost niti jedan code ne funkcionira

Prvi code izbacuje grešku poslije svakog reda naredbe (The sintax of the command is incorrect)
Drugi code izbacije grešku (The system cannot find the file specified )

Za sada radim folder po folder (mukotrpno ali eto kada imam vremena viška trošim ga ovdje)
Da bi ti bilo jasnije što želim opet ću malo pojasniti. U ovom primjeru imam folder A i 3 subfoldera.

Folderi su

C:\Tmp\A
- Rep.bat
- Slika.png => 3kb

C:\Tmp\A\back\
- 1.png => 10kb
- 2.png => 15kb
- 3.png => 20kb
- 4.png => 31kb

C:\Tmp\A\front\
- 10.png => 121kb
- 20.png => 10kb
- 30.png => 18kb
- 40.png => 1454kb
- 50.png => 10kb
- 60.png => 18kb

C:\Tmp\A\bottom\
- 100.png => 21kb
- 200.png => 114kb
- 300.png => 17kb
- 400.png => 39kb


Trebam dobiti isto to samo u folderu B sa subfolderima a svaki od navedenih fajlova moraju biti istog naziva kao i u A ali veličine kao što je Slika.png (3kb)

C:\Tmp\B\back\
- Replace.txt
- 1.png => 3kb
- 2.png => 3kb
- 3.png => 3kb
- 4.png => 3kb

C:\Tmp\B\front\
- Replace.txt
- 10.png => 3kb
- 20.png => 3kb
- 30.png => 3kb
- 40.png => 3kb
- 50.png => 3kb
- 60.png => 3kb
-

C:\Tmp\B\bottom\
- Replace.txt
- 100.png => 3kb
- 200.png => 3kb
- 300.png => 3kb
- 400.png => 3kb

Trenutno radim na sličan način ali folder po folder (jer nemam source za rad sa subfolderima) i to na način ovim redoslijedom

1. U folder C:\Tmp\A kopiram sve slike nekog foldera koje želim obraditi
2. U CMD prozoru pokrenem dir > replace.txt
3. Kopiram iz replace.txt nazive fajlova u Word i izbacim sav višak tako da mi ostanu samo nazivi tipa:

naziv.png
naziv2.png
naziv3.png
itd...
4. Iz Worda to vratim u fajl "replace.txt"
5. Ponovno u CMD prozoru pokrenem naredbu rep.bat slika.png replace.txt. U ovom slučaju mi funkcionira BATCH skripta koju sam citirao u prvom postu na dnu.
6. Sada sam sve fajlove dobio sa njihovim istim nazivom ali sa veličinom kao što je slika.png => 3kb
7. Odradim Move tih obrađenih fajlova na određenu destinaciju i opet kopiranje novih fajlova spremnih za obradu.
8. Tako u krug (kavica i laganini slušam kako kiša pada i "plopoće" po prozoru ;-)

Ovo mi je za sada najednostavniji način koji može odraditi ono što želim (jer drugi ne znam).

Jeste mukotrpan posao ali što kad je tako. Imam ja toga puno pa bi mi opcija sa više subfodera dobro došla.

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Odgovara ti samo konzolni program, ili moze sa grafickim okruzenjem?
Meni nije tesko da ti napisem program za ovako nesto. Ne treba mi vise od pola sata za to.

offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

bobby ::Ne treba mi vise od pola sata za to. Pola sata ???
Meni odgovara sve što može odraditi ovo što trebam i na način koji sam izložio jer imam dosta subfoldera i slika Very Happy

Hvala na ponudi

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ivane, evo ga program:
https://www.mycity.rs/must-login.png

Prvo polje ti je za onu sliku koju zelis da kloniras svugde.
Drugo polje ti je folder sa originalnim slikama.
Trece polje ti je za izlazne podatke.

Bice "klonirani" samo oni fajlovi cija je ekstenzija ista sa ekstenzijom fajla iz prvog polja. Ukoliko ti je taj fajl JPG, onda ce biti "klonirani" samo JPG fajlovi.
Ukoliko u originalnom folderu imas i druge tipove slika (GIF, PNG itd.), onda ces morati da radis iz vise puta (samo odaberes drugi tip slike u polju 1).


Probaj prvo na nekim nevaznim stvarima, nemoj odmah "u produkciju".
Javi ako nedjes nekih gresaka.

offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

bobby ::Javi ako nedjes nekih gresaka. @bobby, Što da ti kažem ?
HVALA !

Radi fantastično bez greške, taman ono što trebam

Pozz Ivan

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

IvanC ::@soxxx
Nažalost niti jedan code ne funkcionira

Prvi code izbacuje grešku poslije svakog reda naredbe (The sintax of the command is incorrect)
Drugi code izbacije grešku (The system cannot find the file specified )

Prvi je promašaj, nisam dobro pročitao post. Medjutim, drugi kod mene sa tvojim primerima radi. Kad se ne zadaju slika.png i replace.txt prilikom pozivanja rep.bat skripte onda dolazi do greske koju si naveo.

Ali vidim da je bobby već dao mnogo bolje rešenje. Wink
Ovo bi se na nekoj drugoj platformi (čitaj Unix, BSD, Linux) rešilo za 2 minuta, ali kako ja nisam baš vičan skriptovanju na Windowsu... Very Happy Važno da je problem rešen.

Pozdrav

offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

soxxx ::ali kako ja nisam baš vičan skriptovanju na Windowsu... Very Happy Važno da je problem rešen.baš tako važno je da sam riješio.
Hvala i tebi za trud, da nije bilo vas dvojice sa Vašim prijedlozima i rješenjima ja bih se mučio u ova dva problema koja sam imao još danima.
Ovaj program od @bobbyja je stvarno odradio sve (za 10 minuta obradio sam stotine fajlova u subfolderima koji idu do 4 nivoa)

što se mene tiče ova tema može biti lock Very Happy

pozz obojici

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Evo ga i source code (Lazarus/FreePascal), ukoliko nekome zatreba:
https://www.mycity.rs/must-login.png

Ko je trenutno na forumu
 

Ukupno su 782 korisnika na forumu :: 3 registrovanih, 0 sakrivenih i 779 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: branko7, pacika, zeo