Poslao: 23 Apr 2014 12:25
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
Imam jedan problem koji moram odraditi na preko 1600 files.
U Folderu C:\Temp nalazi se nekoliko desetaka foldera i subfoldera a u njima cca 1600 *.html files
U tom *.html files nalaze se JavaScripte AdSense oglasa i ima ih više vrsta tj. sa različitim source kodom
Trebao bih u jednom potezu sve te JS skripte staviti pod HTML komentare, i naravno kada odradim željeni posao sve te JavaScripte ponovno vratiti u prvobitno originalno stanje. Imam preko 25 komada tih različitih JS skripti.
(smetaju mi prilikom editiranja tj. usporavaju me kod rada na tim HTML datotekama)
Ako netko ima VBS skriptu ili sličan program a možda zna za nešto slično bio bih zahvalan.
(vidi attach foldera sa primjerom datoteka)
Program bi u stvari trebap pronaći sve što se nalazi između koda <script ..... </script> i postaviti u komentar <!-- XXXX -->, ali kasnije i vratiti u prvobitno stanje originala.
[Link mogu videti samo ulogovani korisnici]
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 24 Apr 2014 13:33
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Mozes li da postavis kratak primer fajla, tj. tog teksta jer trenutno ne mogu da otvorim prilog (blokira me proksi). Verovatno moze da se nesto uradi kratkom awk skriptom.
|
|
|
|
Poslao: 24 Apr 2014 21:08
|
offline
- dr_Bora

- Anti Malware Fighter
Rank 2
- Pridružio: 24 Jul 2007
- Poruke: 12280
- Gde živiš: Höganäs, SE
|
Citat:Program bi u stvari trebap pronaći sve što se nalazi između koda <script ..... </script> i postaviti u komentar <!-- XXXX -->, ali kasnije i vratiti u prvobitno stanje originala.
Treba iskomentarisati sve <script ..... </script> blokove ili samo one koji su vezani za adsense?
|
|
|
|
Poslao: 25 Apr 2014 00:21
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
@soxxx
evo primjer jedne datoteke koja sadrži 4 SCRIPT koda (rotator bannera, 2x AdSense, Tracking Analytics)
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0 transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Content-Language" content="hr">
<title>title</title>
<script
language="JavaScript"
src="http://www.ic.ims.hr/magicimage.js"
type="text/javascript">
</script>
</head>
<body>
<table border="0" width="100%" id="table6" style="border-collapse: collapse">
<tr>
<td colspan="2" align="center">
<p style="text-align: center"> </p>
stranica 1 </p> </td>
</tr>
<tr>
<td class=H1 valign="top" style="text-align: center" colspan="2"> </td>
</tr>
<tr>
<td class=H1 valign="top" colspan="2"> </td>
</tr>
<tr>
<td class=H1 valign="top" style="text-align: center" colspan="2"><script type="text/javascript"><!--
google_ad_client = "pub-123456789";
/* 728x15,*/
google_ad_slot = "124689";
google_ad_width = 758;
google_ad_height = 18;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td>
</tr>
<tr>
<td class=H1 valign="top" colspan="2">
<table border="0" width="100%" id="table21" style="border-collapse: collapse">
<tr>
<td align="center"> </td>
</tr>
</table> </td>
</tr>
<tr>
<td colspan="2"><script type="text/javascript"><!--
google_ad_client = "ca-pub-123456789";
/* Veliki vodoravni 970x90 */
google_ad_slot = "12345678";
google_ad_width = 390;
google_ad_height = 40;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td>
</tr>
<tr>
<td valign="top" colspan="2"><hr></td>
</tr>
<tr>
<td valign="top" colspan="2"><hr></td>
</tr>
<tr>
<td valign="top" colspan="2">
<table border="0" width="100%">
<tr>
<td align="center"> </td>
</tr>
</table> </td>
</tr>
</table>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-95147806-5");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
@dr_Bora
Što da ti kažem, volio bih imati obe verzije za svaki slučaj jer ne znam što kada može trebati.
Najveći problem su mi ove adsense skripte koje već u sebi sadrže komentare. Ja imam takvih skripti preko 25 ali nisu sve implementirane na svaku stranicu.
Ako je u pitanju BLOK AdSense onda je odgovor potvrdan.
Primjer: moram skripte staviti izvan [code] da bi se vidjeli Bold i Crvene oznake
Ovo je PRVA JS: Koja sada trenutno sadrži dva HTML komentara (otvoreni i zatvoreni) u prvom dijelu skripte
<script type="text/javascript"><!--
google_ad_client = "ca-pub-123456789";
/* Ads XYZ */
google_ad_slot = "13579";
google_ad_width = 120;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="//pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
Ovu gornju skriptu program mora pronaći i treba obuhvatiti novim komentarima, pa bi u konačnici trebala izgledati ovako
<!--<script type="text/javascript"><!--
google_ad_client = "ca-pub-123456789";
/* Ads XYZ */
google_ad_slot = "13579";
google_ad_width = 120;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="//pagead2.googlesyndication.com/pagead/show_ads.js">
</script>-->
Dakle skripta treba dodati otvoreni i zatvoreni kod HTML komentara na početku i kraju.
Ovakvih JavaScript kodova ima preko-nekoliko vrsta, tako da ja ne mogu to uraditi preko TXT editora jer bi se mogao izgubiti i napraviti neki propust što u konačnici uništavav sav posao.
Dakle može JS skripta izgledati i ovako
[code]<script type="text/javascript"><!--
google_ad_client = "ca-pub-123456789";
/* Ads XYZ */
google_ad_slot = "2468";
google_ad_width = 407;
google_ad_height = 305;
//-->
</script>
<script type="text/javascript"
src="//pagead2.googlesyndication.com/pagead/show_ads.js">
</script>[/code]
Znači ima dijelova koji nisu isti u svim skriptama.
Gledajući skriptu iznad koju sam obojao PLAVI komentari moraju na kraju ostati a CRVENI biti uklonjeni
I na kraju kada odradim posao opet trebam ukloniti te komentare koji su dodani na početku i na kraju skripte (prvi i zadnji), tako da na kraju završenog posla sve skripte budu u originalu kao što su i bile.
Dakle hodogram ide otprilike ovako:
1. Komentiram sve skripte
2. Odradim neke poslove na stranicama i kada sam završio
3. ponovno uklonim dodane komentare sa ADS skripti (ali tako da ostane onaj komentar koji se već nalazio unutar ADS skripte
BTW: ovo bi bilo dobro za sve <script ..... </script> blokove, ali ako ne može onda je dobro i samo za ADS a ja ću preko TXT editora ostale "iskomentarisati"
|
|
|
|
Poslao: 25 Apr 2014 22:33
|
offline
- dr_Bora

- Anti Malware Fighter
Rank 2
- Pridružio: 24 Jul 2007
- Poruke: 12280
- Gde živiš: Höganäs, SE
|
Napisano: 25 Apr 2014 20:07
IvanC ::Ovu gornju skriptu program mora pronaći i treba obuhvatiti novim komentarima, pa bi u konačnici trebala izgledati ovako
<!--<script type="text/javascript"><!--
google_ad_client = "ca-pub-123456789";
/* Ads XYZ */
google_ad_slot = "13579";
google_ad_width = 120;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="//pagead2.googlesyndication.com/pagead/show_ads.js">
</script>-->
Ovde komentar prestaje već kod --> i ostaju ti 4 aktivne linije. Zar ne?
Dopuna: 25 Apr 2014 22:33
Probaj ovo...
Drag & drop foldera, na kraju ćeš dobiti poruku koliko html file-ova je obrađeno.
Originalni file-ovi će dobiti old ekstenziju.
Testirah na folderu koji su uploadovao, izgleda ok (ako je verovati Notepad++). Sve skripte treba da su iskomentarisane (teško je odraditi samo adsense).
U prvobitno stanje vraćaš sa search and replace ovih:
<!--TempComment
TempComment-->
u "" (u ništa). Dobije se identičan file kao originalni.
Set objFSO = CreateObject("Scripting.FileSystemObject")
'------------------------
Sub PutComment(sFileToFix)
Dim oOldFile, oNewFile, sLine, nScriptStartPos, nScriptEndPos, nCommentEndPos, bCommentIsOpen
Set oOldFile = objfso.OpenTextFile(sFileToFix, 1)
Set oNewFile = objfso.OpenTextFile(sFileToFix & ".new", 2, True)
bCommentIsOpen = False
If Not oOldFile.AtEndOfStream Then
While Not oOldFile.AtEndOfStream
sLine = oOldFile.ReadLine
nScriptStartPos = InStr(1, sLine, "<script", vbTextCompare)
If nScriptStartPos > 0 Then
sLine = Replace(sLine, "<script", "<!--TempComment<script") 'our comment is opened
bCommentIsOpen = True
End If
nScriptEndPos = InStr(1, sLine, "</script>", vbTextCompare)
If nScriptEndPos > 0 Then
sLine = Replace(sLine, "</script>", "</script>TempComment-->") 'our comment is closed
bCommentIsOpen = False
End If
nCommentEndPos = InStr(1, sLine, "-->", vbTextCompare) ' position of the subcomment end
If (nCommentEndPos > 0) And bCommentIsOpen Then sLine = Replace(sLine, "-->", "--><!--TempComment") ' reopen our comment
If oOldFile.AtEndOfStream Then
oNewFile.Write(sLine)
Else
oNewFile.WriteLine(sLine)
End If
Wend
End If
oNewFile.Close
oOldFile.Close
'objFSO.DeleteFile sFileToFix, True ' delete original or...
objFSO.MoveFile sFileToFix, sFileToFix & ".old" ' rename original to .old
objFSO.MoveFile sFileToFix & ".new", sFileToFix
End Sub
'------------------------
Sub ShowSubFolders(Folder)
For Each Subfolder In Folder.SubFolders
Set objFolder = objFSO.GetFolder(Subfolder.Path)
Set colFiles = objFolder.Files
For Each objFile In colFiles
If LCase(objFSO.GetExtensionName(objFile.Path)) = "html" Then
PutComment objFile.Path
nCount = nCount + 1
End If
Next
ShowSubFolders Subfolder
Next
End Sub
'------------------------
'------------------------
If WScript.Arguments.length = 0 Then
MsgBox "Drag and drop a folder with html files"
WScript.Quit
End If
objStartFolder = WScript.Arguments(0)
If Not objFSO.FolderExists(objStartFolder) Then
MsgBox "This is not a folder!"
WScript.Quit
End If
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
nCount = 0
For Each objFile In colFiles
If LCase(objFSO.GetExtensionName(objFile.Path)) = "html" Then
PutComment objFile.Path
nCount = nCount + 1
End if
Next
ShowSubfolders objFSO.GetFolder(objStartFolder)
MsgBox "Done!" & vbCrLf & vbCrLf & "Files: " & nCount
|
|
|
|
Poslao: 25 Apr 2014 23:41
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
dr_Bora ::
Testirah na folderu koji su uploadovao, izgleda ok (ako je verovati Notepad++). Sve skripte treba da su iskomentarisane (teško je odraditi samo adsense).
U prvobitno stanje vraćaš sa search and replace ovih:
<!--TempComment
TempComment-->
ODLIČNO!
Što da ti kažem i ovako je dobro, sve JS su na neki način blokirane i EW4 ih neće učitavati pa sam si ubrzao posao.
Nešto slično sam ja zamislio preko Find/Replace ali na način da za svaku JavaScript koju imam u html kodu (preko 30 vrsta) odredim neku jedinstvenu šifru pa sve to dvaput sa Find/Replace ukloniti pa vratiti i to sve na preko 1500 files
Nije ni to teško samo treba utoršiti vremena ali kako znati jesam li negdje pogriješio a i pitanje je kako vratiti prethodni korak ako jesam.
Ali ovaj tvoj VBS kod mi skraćuje vrijeme rada i ubrzava posao pogotovo što ima *.old files.
HVALA ti!
pozz
Što se mene tiče problem je riješen.
|
|
|
|
Poslao: 29 Apr 2014 10:37
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Izvini na kasnom odgovoru, nisam puno pri kompjuteru ovih dana. Vidim da je dr_Bora vec dao resenje koje ti odgovara, ali posto sam se prvi javio da probam i ja.
Dakle, koristicu gawk za Windows. Batch skripta:
setlocal EnableDelayedExpansion
for /f "delims= " %%i in (spisak.txt) do (
set "destf=%%~nxi"
gawk -f runme4.awk %%i > dest_dir/!destf!
)
gawk program je u istom, tj. pocetnom folderu. Odredisni folder je dest_dir (mada veoma lako moze da se postavi da kopira vajlove u iste foldere). Gawk skripta koja samo vrsi izmenu kod <script> tagova:
# Komentari u html fajlu
/<script/{
print gensub(/(<script)/,"<!--KOMENT--< \\1", "g", $0)
next;
}
/<\/script>/{
print gensub(/(<\/script>)/,"\\1 >--KOMENT-->", "g", $0)
next;
}
{ print }
Probao na onom tvom folderu i mislim da je sve ok. Moze i samo za adsense, samo da se prepravi kod.
Btw, na dr_Borinom primeru mislim da ima jedan "<!--" viska? Ne razumem se u html, ali mi se cini da jedan komentar ostaje otvoren?
Citat:
<!--TempComment<script type="text/javascript"><!--
google_ad_client = "pub-123456789";
/* 728x15,*/
google_ad_slot = "124689";
google_ad_width = 758;
google_ad_height = 18;
//--><!--TempComment
</script>TempComment-->
<!--TempComment<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>TempComment-->
|
|
|
|
Poslao: 29 Apr 2014 16:17
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
soxxx ::Izvini na kasnom odgovoru, nisam puno pri kompjuteru ovih dana. Vidim da je dr_Bora vec dao resenje koje ti odgovara, ali posto sam se prvi javio da probam i ja........
Probao na onom tvom folderu i mislim da je sve ok. Moze i samo za adsense, samo da se prepravi kod.
@soxxx hvala ti na odgovoru, vidim da si se potrudio. Međutim ja ne znam prepraviti ovu tvoju skriptu, ali više nije ni važno, možda će biti dobro za druge čitatelje teme.
Meni savršeno odgovara VBS zbog jednostavnosti i bez ikakvih dodatnih instalacija programa a pogotovo što mi pravi kopiju *.old za svaki slučaj.
btw: onaj koment za višak u skripti ne razumijem pa eto dr_Bora neka pogleda ali meni sve radi OK i kada odradim Find/Replace skripta se vraća u prvobitno stanje sa rasporedom naredbenih linija.
U svakom slučaju pohvale za trud i rad.
pozz
|
|
|
|
|
Poslao: 29 Apr 2014 20:13
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
dr_Bora ::Bez boldovanog "<!--TempComment", jedan deo (8. linija) ostaje da "visi" van komentara:dr_Bora koji TXT editor koristiš da ti boja source code i stavlja ove znakove?
|
|
|
|