Autor
|
Tema: Ayuda con Bat o Vbs (Leído 8,566 veces)
|
AngelFire
Desconectado
Mensajes: 118
WTF :)
|
casi completo de mucha ayuda me sirvio esto salida.WriteLine (Mid(tmpStr,899,5)) &" "& (Mid(tmpStr,934+4,25))
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
Modo de empleo CScript.exe ".\Script.vbs" ".\Archivo1.txt" ".\Archivo2.txt" "etc..." Source ' Example: RegEx capture in textfile, By Elektro Option Explicit Dim args, arg, _ outPath, fullpath, fileName, fileExt, _ fso, file, fileContent, _ rgx, rgxMatches, rgxMatch, rgxValue Set args = WScript.Arguments If args.Count = 0 Then Wscript.Echo("Any filepath specified.") Wscript.Quit(1) End If outPath = ".\Output\" Set fso = WScript.CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(outPath) Then Call fso.CreateFolder(outPath) End If ' El primer grupo de esta expresión captura el string "cash out:" plus el valor decimal. ' El cuarto grupo de esta expresión captura el valor decimal. Set rgx = New RegExp rgx.Pattern = "Cash(\s+)?out(\:)?(\s+)?([\d\.]+)" rgx.IgnoreCase = True rgx.Global = True For Each arg in args fullPath = fso.GetAbsolutePathName(arg) fileName = fso.GetBaseName(fullPath) fileExt = fso.GetExtensionName(fullPath) fileContent = fso.OpenTextFile(fullPath, 1).ReadAll Set rgxMatches = rgx.Execute(fileContent) Set file = fso. CreateTextFile(outPath & "\" & fileName & "_new" & "." & fileext ) Wscript.Echo("[+] Processing file: " & fullPath) For Each rgxMatch in rgxMatches rgxValue = rgxMatch.Submatches(3) Wscript.Echo(rgxValue) Call file. WriteLine("Cash Out: " & rgxValue ) Next Next Wscript.Quit(0)
Output asdadasdasdasd asdsadas asdasdasd cash out: 1.97 asdasdas asdasda asdadasdasdasd asdsadas asdasdasd cash out: 212.34 asdasdas asdasda Cash Out: 1.97 Cash Out: 212.34 Saludos
|
|
« Última modificación: 20 Febrero 2015, 19:44 pm por Eleкtro »
|
En línea
|
|
|
|
AngelFire
Desconectado
Mensajes: 118
WTF :)
|
Elektro excelente código ya que con el mio no conseguía tan buen resultado. Estoy intentando entenderlo aun ya que contiene un camión de cosas que nunca he usado porque te repito mi nivel es muy básico. No se si notaste que use: Fichero = "C:\Ejemplo\" & i &".txt" Esto se debe que estamos probando solo con 3 archivos pero en la practica son aproximadamente 1 000 000 de txt. Como te puedes dar cuenta esto es un problema a la hora de: CScript.exe ".\Script.vbs" ".\Archivo1.txt" ".\Archivo2.txt" "etc..."
Creo que resuelvo con esto: On Error Resume Next For i = 1 To 100000 Set crack = CreateObject("WScript.Shell") crack.Run "cscript.exe .\Script.vbs .\input\"&i&".txt",vbhide wscript.sleep 500 next MsgBox "Tarea Finalizada",0,"Prueba" Cual seria la modificación a realizar en tu excelente código Elektro para poder sacar el valor de un Archivo1.txt que contenga: <b>Cash Out: </b> 1.97x </p> <b>Cash Out: </b> 212.34x </p>
Pensé que no seria un problema con el ejemplo que puse que Archivo1.txt era asdadasdasdasd asdsadas asdasdasd cash out: 1.97 asdasdas asdasda asdadasdasdasd asdsadas asdasdasd cash out: 212.34 asdasdas asdasda para no complicar mucho las cosas. Pero si es un problema a la hora de aplicarlo al Archivo1.txt en cuestion: <b>Cash Out: </b> 1.97x </p> <b>Cash Out: </b> 212.34x </p> [MOD]: Está prohibido hacer doble post.
|
|
« Última modificación: 22 Febrero 2015, 20:28 pm por Eleкtro »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
Cual seria la modificación a realizar en tu excelente código Elektro para poder sacar el valor de un Archivo1.txt que contenga: <b>Cash Out: </b> 1.97x </p> <b>Cash Out: </b> 212.34x </p> Para sacar el "1.97" usa esta expresión: rgx.Pattern = "(cash.+out.+\s+)([\d\.]+)"
Si quieres sacar el "1.97" incluyendo la "x" (que no se a que hace referencia), usa esta expresión: rgx.Pattern = "(cash.+out.+\s+)([\d\.]+[^\s])"
Como he disminuido la cantidad de grupos de la expresión (para no hacer demasiado compleja la expresión regular por las etiquetas Html), debes usar esta modificación también: rgxValue = rgxMatch.Submatches(1)
Saludos
|
|
« Última modificación: 22 Febrero 2015, 20:30 pm por Eleкtro »
|
En línea
|
|
|
|
AngelFire
Desconectado
Mensajes: 118
WTF :)
|
Moderador disculpe por el doble post pero cada vez que le daba eliminar en la cruz me decía que no se podía porque alguien lo estaba viendo, de todas maneras aceptada por mi parte la alerta de que no se acepta doble post. Increíble funciona a la perfección para con x y sin x <b>Cash Out: </b> 1.97x </p> <b>Cash Out: </b> 212.34x </p> Pero al pasarselo a 1.html no funciona alguna idea: <!DOCTYPE html><html> <head> <title>Play Info -- xxxxxx.com</title> <link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon"> <link rel="icon" href="/img/favicon.ico" type="image/x-icon"> <meta charset="utf-8" /> <meta name="format-detection" content="telephone=no" /> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"/> <link rel="stylesheet" href="/css/cb42743da.css" /> </head><body><div class="wrap"> <header> <nav class="nav-top-bar"> <div class="title"> <a href="/"> <img src="/img/logo.png" alt="logo" width="40px" /> <h1 class="hide-for-small-only">xxxxxx.com</h1> </a> </div> <div class="show-for-small-up user-login"> <a href="/register">Register</a> <a href="/login">Log in</a> </div> </nav> </header> <div class="content"> <div class="row panel radius"> <h4>Game #<strong>1</strong> information</h4> <p> <b>Cash Out: </b> 2.46x </p> <p> <b>Played: </b>Sat Ene 12 2015 00:20:13 GMT+0000 (UTC) <small>7 months ago</small> </p> <hr> <h6>Players</h6> <table class="user-table"> <thead> <tr> <td>Player</td> <td>Bet</td> <td>Cash Out</td> <td>Bonus</td> <td>Profit</td> </tr> </thead> <tbody> </tbody> </table> <h6><b>Hash:</b> <a href="/faq#fair">null</a></h6> </div> </div> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-54064423-1', 'auto'); ga('send', 'pageview'); </script></div></body></html>
|
|
« Última modificación: 23 Febrero 2015, 00:46 am por AngelFire »
|
En línea
|
|
|
|
AngelFire
Desconectado
Mensajes: 118
WTF :)
|
|
|
« Última modificación: 23 Febrero 2015, 17:51 pm por AngelFire »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
funciona a la perfección para con x y sin x Pero al pasarselo a 1.html no funciona alguna idea: <!DOCTYPE html><html> <head> <title>Play Info -- xxxxxx.com</title> <link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon"> <link rel="icon" href="/img/favicon.ico" type="image/x-icon"> <meta charset="utf-8" /> <meta name="format-detection" content="telephone=no" /> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"/> <link rel="stylesheet" href="/css/cb42743da.css" /> </head><body><div class="wrap"> <header> <nav class="nav-top-bar"> <div class="title"> <a href="/"> <img src="/img/logo.png" alt="logo" width="40px" /> <h1 class="hide-for-small-only">xxxxxx.com</h1> </a> </div> <div class="show-for-small-up user-login"> <a href="/register">Register</a> <a href="/login">Log in</a> </div> </nav> </header> <div class="content"> <div class="row panel radius"> <h4>Game #<strong>1</strong> information</h4> <p> <b>Cash Out: </b> 2.46x </p> <p> <b>Played: </b>Sat Ene 12 2015 00:20:13 GMT+0000 (UTC) <small>7 months ago</small> </p> <hr> <h6>Players</h6> <table class="user-table"> <thead> <tr> <td>Player</td> <td>Bet</td> <td>Cash Out</td> <td>Bonus</td> <td>Profit</td> </tr> </thead> <tbody> </tbody> </table> <h6><b>Hash:</b> <a href="/faq#fair">null</a></h6> </div> </div> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-54064423-1', 'auto'); ga('send', 'pageview'); </script></div></body></html> El motor RegEx no fue diseñado para parsear documentos Html, RegEx no entiende la estructua Html, y para ciertas cosas se puede volver un auténtico desafio el diseñar la expresión correcta. rgx.Pattern = "cash.+out.+\s+<\/\w+>\s+([\w\.]+)" ... rgxValue = rgxMatch.Submatches(0) Con esa expresión regular obtienes el valor "2.46x" en ese documento Html. Para más info sobre el manejo de Regex, es preferible que leas la Wikipedia: http://en.wikipedia.org/wiki/Regular_expressionSaludos
|
|
|
En línea
|
|
|
|
AngelFire
Desconectado
Mensajes: 118
WTF :)
|
Excelente decididamente eres un duro en el tema funciona a la perfección. No pensé que creara tantos obstáculos desde el principio no dar el ejemplo del fichero en cuestión así como no hice mucho casos a que fuera txt o html pero ya veo cuan equivocado estaba. Ok te voy diciendo como queda todo: Asi descargo el 1000000 de resultados separados en carpetas de 100000. On Error Resume Next For i = 1 To 100000 Set crack = CreateObject("WScript.Shell") crack.Run "wget -r -nd -P 100000 -A .html -e robots=off --no-check-certificate https://www.xxxxx.com/game/"&i&".html",vbhide wscript.sleep 500 next MsgBox "Tarea Finalizada",0,"Download"
Asi paso tu script de ayuda a los 100000 resultados On Error Resume Next For i = 1 To 100000 Set cmd = CreateObject("WScript.Shell") cmd.Run "cscript.exe .\Script.vbs .\game\100000\"&i&".html",vbhide wscript.sleep 500 next MsgBox "Tarea Finalizada",0,"Valor"
Tu script ' Example: RegEx capture in textfile, By Elektro 'CScript.exe ".\Script.vbs" ".\1.html" ".\2.html" "etc... Option Explicit Dim args, arg, _ outPath, fullpath, fileName, fileExt, _ fso, file, fileContent, _ rgx, rgxMatches, rgxMatch, rgxValue Set args = WScript.Arguments If args.Count = 0 Then Wscript.Echo("Any filepath specified.") Wscript.Quit(1) End If outPath = ".\Output\100000\" Set fso = WScript.CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(outPath) Then Call fso.CreateFolder(outPath) End If ' El primer grupo de esta expresión captura el string "cash out:" plus el valor decimal. ' El cuarto grupo de esta expresión captura el valor decimal. Set rgx = New RegExp rgx.Pattern = "Cash.+Out.+\s+<\/\w+>\s+([\w\.]+)" rgx.IgnoreCase = True rgx.Global = True For Each arg in args fullPath = fso.GetAbsolutePathName(arg) fileName = fso.GetBaseName(fullPath) fileExt = fso.GetExtensionName(fullPath) fileContent = fso.OpenTextFile(fullPath, 1).ReadAll Set rgxMatches = rgx.Execute(fileContent) Set file = fso.CreateTextFile(outPath & "\" & fileName & ".txt") Wscript.Echo("[+] Processing file: " & fullPath) For Each rgxMatch in rgxMatches rgxValue = rgxMatch.Submatches(0) Wscript.Echo(rgxValue) Call file.WriteLine("Cash Out: " & rgxValue) Next file.Close Next Wscript.Quit(0)
Así uno todas las salidas de tu script en un solo fichero con 100000 lineas On Error Resume Next For i = 1 To 100000 Fichero = "C:\Play\output\100000\" & i &".txt" Set objFSO = CreateObject("Scripting.FileSystemObject") filepath = Fichero Set objInputFile = objFSO.OpenTextFile(filepath) tmpStr = objInputFile.ReadLine Set texto = CreateObject("Scripting.FileSystemObject") Set salida = texto.CreateTextFile (".\Salida100000.txt", True) salida.WriteLine (Mid(tmpStr,1,50)) & n Next MsgBox "Tarea Finalizada",0,"Play"
Y después puedo realizar el análisis importando Salida100000.txt a excel pero realmente todo es para ver esto que pregunte aqui http://foro.elhacker.net/scripting/ayuda_con_excel-t430543.0.html, ya que puedo ver mas cosas pero la que mas me interesa aun no se jajajajajajaj. Que tengo un script en python que lo hace pero me gustaría ver igual como se soluciona en excel . Aquí la versión en español de lo que pasaste para los que no dominen mucho el ingles: http://es.wikipedia.org/wiki/Expresi%C3%B3n_regularGracias por todo.
|
|
« Última modificación: 25 Febrero 2015, 00:59 am por AngelFire »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
Excelente decididamente eres un duro en el tema funciona a la perfección. No pensé que creara tantos obstáculos desde el principio no dar el ejemplo del fichero en cuestión así como no hice mucho casos a que fuera txt o html pero ya veo cuan equivocado estaba. No te preocupes, en un lenguaje limitado como VBS la única alternativa más o menos decente para parsear texto es utilizar RegEx, o eso, o a base de Splits + y comparaciones de String, lo que que se vuelve muy tedioso en este lenguaje. Solo quería remarcarte que utilizar RegEx puede causarte frustración por problemas de diseño debido a sus limitaciones impuestas por naturaleza sobre estructuras Html, pero vaya, de poco importa ya que RegEx es lo único que puedes utilizar, a menos que cambies de lenguaje por uno más competente el cual disponga de herramientas eficientes para dicha tarea (dichas herramientas siempre pueden ser también el uso de librerías de terceros). Saludos!
|
|
« Última modificación: 24 Febrero 2015, 03:30 am por Eleкtro »
|
En línea
|
|
|
|
AngelFire
Desconectado
Mensajes: 118
WTF :)
|
El script presenta problemas para tipos: 16,002x 160,989.4x 1,900x
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Ayuda] Necesito ayuda para crear un buen video uso AF y Flash.
Diseño Gráfico
|
XXXXXX
|
1
|
5,523
|
11 Noviembre 2009, 00:17 am
por Sub_Cero
|
|
|
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
|
XxRekcahlExX
|
6
|
10,601
|
24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
|
|
|
AYUDA -.- ahora no entro más en 4chan (tengo una duda, ayuda por favor)
Foro Libre
|
Draklit
|
6
|
8,780
|
15 Octubre 2010, 03:14 am
por Draklit
|
|
|
sist lince indumentaria ayuda ayuda!!!!!!!!!! problemon que hice en le trabajo
Software
|
paola03
|
1
|
4,959
|
11 Marzo 2011, 01:09 am
por charola42
|
|
|
[PYTHON][AYUDA][ERROR] Necesito ayuda para instalar PyGTK 2 en windows 7
Scripting
|
Noxware
|
2
|
7,645
|
20 Septiembre 2014, 00:05 am
por Noxware
|
|