Skripta Find-Replace u svim *.HTML fajlovima

1

Skripta Find-Replace u svim *.HTML fajlovima

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

Tražim skriptu ako tko ima koja može odraditi slijedeće:

Imam folder C:\mapa
U tom folderu nalazi se još 5-6 subfoldera
C:\mapa\subfolder1\
C:\mapa\subfolder2\subsubfolder2a\
C:\mapa\subfolder3\subsubfolder3a\subsubfolder3ab\
........

U glavnom folderu nalazi se desetak *.html files a u svakom subfolderu također cca desetak *.html

Htio bih skriptom u svakom fajlu *.html (da ne otvaram svaki fajl posebno) obrisati cijeli source code i zamjeniti ga određenim istim tj. novim source code (koji sadrži par linija koda).

Dakle u svim fajlovima
1. Brisanje cijelog source koda
2. Umetanje novog sorce koda

Ima li netko skriptu (ili nešto slično i iskoristivo) koja to može odraditi.



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

Sačuvaj fajl kao izmeni.bat:
cd C:\mapa for /f "tokens=*" %%d in ('dir /b/a/s *.html') do echo. > %%d
Ovo će rekurzivno obrisati sve .html fajlove, tj. sadržaće samo jednu praznu liniju i ništa više.

Za ubacivanje koda u fajlove probaj da se snadjes, nisi nam baš dao puno informacija. Wink

Pozdrav



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

Hvala ti
Uspio sam nekako obrisati sav source kod ali su mi ostale linije umjesto koda tako da mi je ovo tvoje rješenje prihvatljivije jer ostavlja samo jednu liniju pa su tako sve datoteke veličine 3 kb.

U stvari ovo što si ti dao je BRISANJE koda a ja sam mislio da odjednom uradi slijedeće:

1. Obrisati sve
2. Umetnuti novi kod

Dakle umjesto bilo kakvog koda na svim *.html stranicama umetnuti npr:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title>Page</title> </head> <body> <table border="0" width="100%">    <tr>       <td>tablica</td>    </tr> </table> </body> </html>

Hvala ti za ponuđeno rješenje

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

IvanC ::Hvala ti
Uspio sam nekako obrisati sav source kod ali su mi ostale linije umjesto koda tako da mi je ovo tvoje rješenje prihvatljivije jer ostavlja samo jednu liniju pa su tako sve datoteke veličine 3 kb.

Ma može i prazan fajl, to sam više onako sklepao u očekivanju više informacija za dalji rad. Wink

IvanC ::U stvari ovo što si ti dao je BRISANJE koda a ja sam mislio da odjednom uradi slijedeće:

1. Obrisati sve
2. Umetnuti novi kod

Dakle umjesto bilo kakvog koda na svim *.html stranicama umetnuti npr:
...

Pa napisah gore da nisi dao šta treba da se umetne pa sam samo dao "polovično" rešenje.

Možda bi moglo da se gleda i sa ove strane; 'ladno mogu da se obrišu ti fajlovi, i da se na njihovo mesto stavi fajl koji bi sadržao te linije koda što si naveo? Ako je to prihvatljivo, onda možda ovo posluži:
cd C:\Documents and Settings\dgudzic\Desktop\tmp\test for /f "tokens=*" %%d in ('dir /b/a/s *.html') do (    type "C:\Documents and Settings\dgudzic\Desktop\tmp\over.txt" > %%d )
Kod koji želis da kopiraš stavi recimo u over.txt fajl. Naravno izmeni putanje, ovo gore je samo test kod mene. Wink

Pazi, ovo će izmeniti SVE html fajlove. Prvo napravi test folder sa par pod-foldera, testiraj skriptu, pa tek ako sve radi primeni je na stvarnim fajlovima.

Pozdrav

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

Napisano: 12 Okt 2010 21:50

Pa što da ti kažem ? Svaka čast ! Very Happy
Sve funkcionira besprijekorno, Hvala ti

Dopuna: 13 Okt 2010 9:14

@soxxx
Sada mi se pojavila potreba za slijedeće

- Pronađi ovaj kod/text

<table border="0" width="100%">    <tr>       <td>tablica</td>    </tr> </table>

- Zamjeni ga ovim kodom/textom

<table border="0" width="100%">          <tr>             <td width="141">1</td>             <td rowspan="2">2</td>          </tr>          <tr>             <td width="141">3</td>          </tr>       </table>

Bilo bi super kada bi također mogao koristiti tekstualne fajlove ( find.txt i over.txt )

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

Pre nego ponudim rešenje, reci mi da li je kod koji treba naći jedini u fajlu, ili fajl sadrži i neki drugi kod? Da li je traženi tekst uvek isti broj linija ili se menj? Od toga će zavisiti i na koji način će se ubaciti kod za zamenu.

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

soxxx ::Pre nego ponudim rešenje, reci mi da li je kod koji treba naći jedini u fajlu, ili fajl sadrži i neki drugi kod? Da li je traženi tekst uvek isti broj linija ili se menj? Od toga će zavisiti i na koji način će se ubaciti kod za zamenu.Mislio sam da to nije važno ako koristim fajlove poput find.txt i over.txt

1. fajl sadrži i neki drugi kod
2. traženi tekst tj. broj linija nije uvijek isti i mjenja se od situacije do situacije.

dakle i ono što tražim (find) i ono što stavljam (replace) je promjenjivo
U prvom slučaju imam Find-A => Replace -B
U drugom slučaju ću imati Find-A => Replace-C
U trećem slučaju ću imati Find-AB => Replace-D....

Ovo mi treba jer nisu svi slučajevi iste namjene.
Nadam se da nisam sad zakomplicirao stvar.

Idealno bi bilo sa ovim TXT fajlovima koje sam spomenuo
Find tekst u fajlu "find.txt" i replace sa tekstom u fajlu "over.txt"

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

Za ovo što ti hoćeš je potreban alat za obradu teksta. Ovaj primer gore je rešiv, ali, ako se kod stalno menja postaje teže. Onda ti treba neki alat koji će "parsirati" html kod na pravi način. Opet, na nekim drugim platformama je to lakše izvesti (*BSD, Linux) jer dolaze sa potrebnim alatima. Kod Windows-a je to teže, barem meni. Smile Elem, pošto je potreban neki alat koji obradjuje tekst, a Windows to nema, predlazem mawk, ima samo 123KB. Wink

Recimo nesto ovako:
setlocal EnableDelayedExpansion cd C:\Documents and Settings\dgudzic\Desktop\tmp for /f "tokens=*" %%d in ('dir /b/a/s *.html') do (    set ime=%%~nd%    set fajl="%%d"        mawk.exe "/<td>tablica<\/td>/{while((getline l<\"replace.txt\")>0) print l; next}1" !fajl! 1>%TEMP%\!ime!    move /y %TEMP%\!ime! !fajl! )
Mawk alat (mawk,.exe) i replace.txt (kod koji si gore naveo) stavi u isti folder. Sve ispod toga su podfolderi sa html fajlovima.

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

soxxx ::Ovaj primer gore je rešiv, ali, ako se kod stalno menja postaje teže.To sam i mislio ali koliko vidim dao si sebi truda, i hvala ti.
soxxx ::
Recimo nesto ovako:
............"mawk.exe "/<td>tablica<\/td>/..........
Koliko vidim ovaj dio koda (<td>tablica<\/td>) je ono što tražim. To sve funkcionira ako je jednostavan tekst (vidi sliku) ali ako je neki kod koji tražim sa više linija, kao što je u prethodnom postu tada ima problema (ili ja nešto ne odradim kako treba)

Uglavnom probao sam i sve funkcionira sa jednostavnim TRAŽENIM tekstom (ne i sa hrpom koda koji mi je ponekada potreban). To mi je dovoljno da bih si napravio startnu poziciju i na drugi način rješavao ostali dio koda. Iskreno rečeno nadao sam se rješenju pomoću fajlova find.txt i replace.txt ;-)

BTW: Mawk sam instalirao klasično u ProgramFiles folder (GnuWin32) i mawk.exe kopirao u folder C:\mapa



Hvala ti još jednom za trud i pomoć
Pozz

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

IvanC ::Koliko vidim ovaj dio koda (<td>tablica<\/td>) je ono što tražim. To sve funkcionira ako je jednostavan tekst (vidi sliku) ali ako je neki kod koji tražim sa više linija, kao što je u prethodnom postu tada ima problema (ili ja nešto ne odradim kako treba)
Da. Problem je zato što nije poznato unapred koliko linija treba naći, jer "šema" može da se ponavlja u kodu i moraš da tačno odrediš šta treba da obrišeš, a i traženi kod može da ide i do 5-6 posebnih linija. Ali opet, ako nam daš još neki primer možda nešto uspemo da napravimo. Wink

IvanC ::Uglavnom probao sam i sve funkcionira sa jednostavnim TRAŽENIM tekstom (ne i sa hrpom koda koji mi je ponekada potreban). To mi je dovoljno da bih si napravio startnu poziciju i na drugi način rješavao ostali dio koda. Iskreno rečeno nadao sam se rješenju pomoću fajlova find.txt i replace.txt ;-)
Jbg, znam. Ni ja ne volim kada nešto ne može da se jednostavno reši. Možda neko drugi uskoči sa više znanja ili saveta.


Citat:BTW: Mawk sam instalirao klasično u ProgramFiles folder (GnuWin32) i mawk.exe kopirao u folder C:\mapa
Ako je imao installer, onda možda i nisi morao, ako je ta putanja u PATH-u.

IvanC ::Hvala ti još jednom za trud i pomoć
Pozz

Nema na čemu. Smile Kao što rekoh, daj jos neki komplikovaniji primer pa da vidimo šta može da se uradi.

Pozdrav

Ko je trenutno na forumu
 

Ukupno su 414 korisnika na forumu :: 12 registrovanih, 0 sakrivenih i 402 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Djole, Dorcolac, Drug pukovnik, havoc995, helen1, ljubo70, miodrag, proka89, Roman, t.mile, Trpe Grozni, zoxknez