Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#5621
Scripting / Re: Ayuda con Bat o Vbs
20 Febrero 2015, 19:33 PM
Modo de empleo
CScript.exe ".\Script.vbs" ".\Archivo1.txt" ".\Archivo2.txt" "etc..."


Source
Código (vbnet) [Seleccionar]
' 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

  file.Close

Next

Wscript.Quit(0)



Output

  • .\Archivo1.txt
asdadasdasdasd asdsadas asdasdasd cash out: 1.97 asdasdas asdasda
asdadasdasdasd asdsadas asdasdasd cash out: 212.34 asdasdas asdasda


  • .\Outpu\Archivo1_new.txt
Cash Out: 1.97
Cash Out: 212.34



Saludos
#5622
Cita de: sadfud en 20 Febrero 2015, 16:16 PMlo que yo quiero es que en la linea 3 me escriba el texto que yo tenga en un textbox.

⇲ Utiliza la propiedad Text del TextBox:
TextBox.Text Property (System.Windows.Controls) - MSDN

⇲ E intenta evitar el uso de metodologías de VisualBasicScript en Vb.Net, puedes desarrollar el código usando puro código .Net:
StreamWriter Class (System.IO) - MSDN - Microsoft

Ejemplo:
Código (vbnet) [Seleccionar]
Imports System.IO
Imports System.Text

Public Class Form1

   Private Sub WriteFile()

       Dim sw As StreamWriter = Nothing

       Try
           sw = New StreamWriter(path:="C:\prueba.txt", append:=False, encoding:=Encoding.Default)
           Using sw
               sw.WriteLine("Primera liinea")
               sw.WriteLine("Segunda linea")
               sw.WriteLine(Me.TextBox1.Text)
           End Using

       Catch ex As Exception
           Throw

       Finally
           If sw IsNot Nothing Then
               sw.Dispose()
           End If

       End Try

   End Sub

End Class



EDITO:
Ora forma de llevarlo a cabo (por ejemplo) sería usando un StringBuilder:
Código (vbnet) [Seleccionar]
Imports System.IO
Imports System.Text

Public Class Form1

   Private Sub WriteFile()

       Dim sb As New StringBuilder
       With sb
           .Appendline("Primera liinea")
           .Appendline("Segunda liinea")
           .Appendline(Me.TextBox1.Text)
       End With

       Try
           File.WriteAllText("C:\prueba.txt", sb.ToString, Encoding.Default)

       Catch ex As Exception
           Throw

       Finally
           sb.Clear

       End Try

   End Sub

End Class


Saludos
#5623
Scripting / Re: variables en batch
20 Febrero 2015, 18:18 PM
Cita de: crisoof en 20 Febrero 2015, 16:59 PMy si la devolucion no es un numero? como seteas a la variable?? xq el set /a es para numeros no?
Para setear valores numéricos se añade el modificador "Set /A", para strings, simplemente "Set".

Cita de: crisoof en 20 Febrero 2015, 16:59 PMsi no uso el usebackq, me desconoce la palabra sqlplusy me pide inicializarla
El problema no es con el nombre del exe (sqlplus.exe) sino con la variable "path_sql" que me imagino que será una variable de entorno definida por la instalación de SQL, y seguramente la variable contiene comillas dobles al principio y al final, y por eso habrás visto o leido por ahí que utilizan el modificador "usebackq", es para poder trabajar esas comillas dobles.
El problema es que ese modificador altera el comportamiento de las comillas y comillas dobles, y la expresión del FOR se vuelve bastante tediosa/compleja de escribir con la sintaxis correcta, la redirección (^| Findstr...) no te va a funcionar correctamente a menos que le quites el "usebakq".

Cuando se usa 'usebackq', los problemas siemrpe son por el uso inadecuado de las comillas/comillas dobles.

Seguramente te estoy mareando porque, como ya comenté, no tengo el sqlplus para testear y corregir la expresión del FOR... pero prueba de esta manera, debería funcionar:

Código (dos) [Seleccionar]
@Echo OFF

REM Declaro una variable que almacenará el valor de la variable 'path_sql', pero sin comillas dobles, las elimino.
Set sqlPath=%path_sql%
Set sqlPath=%sqlPath:"=%

For /F "Tokens=* Delims=" %%a In ('""sqlplus.exe" -s QA_DATAC/qa_dc@orcl_qa @^'%sqlPath%^'ESTADISTICA | "FindStr.exe" "[0-9]""') Do (
Echo %%~a
)

Pause&Exit /B 0


EDITO: Por despiste puse la variable que no era en la expresión FOR (^'path_sql^' en lugar de ^'sqlPath^'), ya está correjido.

¿te funciona?

Saludos
#5624
Scripting / Re: variables en batch
20 Febrero 2015, 16:34 PM
¿Porque usas el modificador 'usebackq' ?, estás cambiando el comportamiento de las comillas de la expresión del For, prueeba sin ese modificador.

EDITO: Ah, por cierto, el Echo del primer For no te va a funcionar por que no estás expandiendo la variable:
CitarFOR /F "usebackq delims=!" %%c in (`sqlplus -s QA_DATAC/qa_dc@orcl_qa @%PATH_SQL%ESTADISTICA ^|Findstr "[0-9]"`) DO (
SET /A "VALUE=%%c"
ECHO %VALUE%
PAUSE
)
Pero fuera del bloque del For si que podrás visualizar el contenido de la variable, que eso es lo que supuestamente quieres.

Para que te funcione ese ejemplo que he citado, utiliza la declaración "Setlocal enabledelayedpexpansion" (y usa el símbolo !! en lugar de %% para mostrar variables) o simplemente añade un call y duplica los símbolos reservados de variable:
CALL ECHO %%VALUE%%


EDITO 2: Te muestro un ejemplo funcional:

Script1.cmd
Código (dos) [Seleccionar]
@Echo OFF

For /F "Tokens=* Delims=" %%# In (
'Echo 123'
) Do (
Set /A "var=%%#"
Call Echo Variable dentro del FOR="%%Var%%"
Call ".\Script2.cmd"
)

Pause&Exit


Script2.cmd
Código (dos) [Seleccionar]
@Echo OFF

Echo Variable desde otro script="%var%"

Exit /B 0


Saludos
#5625
Scripting / Re: variables en batch
20 Febrero 2015, 15:31 PM
Cita de: crisoof en 20 Febrero 2015, 14:35 PM
no puedo hacer un
set %result%=%%i por que no le pasa el valor a la variable

Jamás podrás hacer eso de esa manera, estás utilizando caracteres reservados de variable (%%) al definir el nombre de una variable. Batch no te avisará del error, pero no puedes hacer eso.

Cita de: crisoof en 20 Febrero 2015, 14:35 PMme gustaria saber de que manera puedo entregarle la informacion obtenida de una query o de un txt como les sea mas facil , a una variable, para poder usar esta variable CON el valor fuera del bat, gracias >:D

For /F ...%%# In ('sqli... ^| Findstr "[0-9]"') Do (Set /A "Value=%%#")

Con eso puedes utilizar la variable fuera del búcle del FOR, como ya comenté.

Si por "utilizar la variable fuera del bat" te refieres a que una vez haya terminado todo el Script, puedas utilizar la variable en cualquier otra instancia de la CMD, entonces debes definir una variable de entorno en el sistema operativo:
setx "nombre" "valor"
(es necesario reiniciar la instancia de la CMD para que los cambios surjan efecto)

Saludos
#5626
Scripting / Re: Ayuda con Bat o Vbs
20 Febrero 2015, 15:17 PM
Cita de: AngelFire en 20 Febrero 2015, 08:55 AM
Intente algo como esto pero no me sirve aun

@echo off
(
findstr "Cash out:" 1.txt
findstr "Cash out:" 2.txt
findstr "Cash out:" 3.txt
) > "4.txt"


Esperaba algo de salida como
Cash out:
Cash out:
Cash out:

Batch es un lenguaje muy limitado y una herramienta inutil para ese tipo de tareas.

El comando FIND/FINDSTR buscan coincidencias en una linea, y muestran la linea, no capturan la parte parcial de la linea que coincide con el patrón de búsqueda.

Sigue el consejo del compañero @MCKSys Argentina, utiliza VisualBasicScript, pero utiliza expresiones regulares (RegEx) que es más cómodo.

Saludos!
#5627
Cita de: Songoku en 20 Febrero 2015, 14:42 PM


Mi opinión es totalmente CONTRARIA al respecto, pienso (y mi experiencia en mi trabajo con montones de equipos con todo tipo de sistemas operativos creo que hace mi opinión bastante cualificada) que el win8 es INFERIOR en absolutamente todos los aspectos al win7. El win8 es un sistema operativo en mi experiencia que podría calificar sin excederme demasiado de execrable. Y me da la impresión de que en cuanto salga una nueva versión de windows va a desaparecer del mercado (si es que alguna vez a estado mas que minimamente presente en este) mas rápido que un pastel a la puerta de un colegio. Vamos algo así como lo que pasó con el win me o con el win vista (a pesar de que el vista no era tan malo como se decía ni mucho menos). Mucho después de que ya nadie recuerde al win8 el win7 aun tendrá una gran cuota de uso (lo cual en parte demuestra la calidad de cada uno), y si no tiempo al tiempo jeje.
Saludos...

Songoku


Cuando se lance al mercado "Windows 10" (u otros) yo también creo que Windows 8/8.1 "desaparecerá" del mercado y de la boca de todos en menos tiempo de lo que cuesta hacer un chasquido, y entonces poco a poco Windows 7 pasará a ser "el nuevo XP" (el sistema que usará la mayoría de gente por su relación calidad/rendimiento/compatibilidad), pero no creo que Windows 8/8.1 vaya a quedar como un mal recuerdo que olvidar como sucedió con Vista, ni mucho menos.

Saludos!
#5628
Utiliza la característica "reemplazar todo" que suelen tener esos editores, para reemplazar todas las coincidencias de espacios por un guión...

En Sublime Text simplemente es pulsar la combinación CTRL+H para abrir el panel de reemplazar, y CTRL+ALT+ENTER para reemplazar todo.

Saludos.
#5629
Cita de: cixert en 20 Febrero 2015, 00:14 AM
¿podéis confirmar que versión de Windows NT es?
(la 6.3 o la 10)(dicen que la 7,8 y 9 no van a existir)

Microsoft ya lo confirmó. Windows 10 también será versión 10 intérnamente, es decir, Windows NT 10.0 (por propósitos de Marketing).

http://winsupersite.com/windows-10/microsoft-confirms-windows-10-will-also-be-version-10-internally

Saludos
#5630
Scripting / Re: rubyscript2exe
19 Febrero 2015, 18:24 PM
Cita de: Joe Fraddy en 19 Febrero 2015, 18:11 PMya lo descarge, pero veo que viene en codigo fuente y...

Instala la gema usando Ruby:
gem install 'ocra'

Nota: Si tienes un error, muestra el mensaje completo del error, y especifica que versión y que arquitectura de Ruby estás utilizando.

Saludos