elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  ejecutar .bat desde shell
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ejecutar .bat desde shell  (Leído 9,731 veces)
50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: ejecutar .bat desde shell
« Respuesta #10 en: 25 Mayo 2009, 21:35 pm »

dioooooooos que pedazo codigo jaja, me voy a leer lo de esperar un bat y luego l ode karcrack que tengo para rato

mmm vere tambien lo de dessa, probre con todo en fin jj

edito porfavorrrrr, que error el mio

los ficheros .txt, se crean al lado del exe, no del bat, y como lo estaba ejecutando desde el vb pues,,, ya veis :(

fallo supertonto  >:( sorry por haberos hecho peroder tiempo valioso

porcierto, tambien era lo que decia casiani, que lo hace demasiado deprisa y no le da tiempo a pasarlo al textbox


« Última modificación: 25 Mayo 2009, 21:43 pm por 50l3r » En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: ejecutar .bat desde shell
« Respuesta #11 en: 25 Mayo 2009, 23:38 pm »

Citar
:http://www.recursosvisualbasic.com.ar/htm/listado-api/205-abrir-programa-esperar-a-que-termine.htm
[/quote]

mmm, me parece que eso no sirve para esperar que un un bat termine.

Código:
Option Explicit

Private Sub Form_Load()
   Text1 = "ipconfig"
End Sub

Private Sub Command1_Click()

Dim casa As String: casa = Environ$("homedrive")
Dim orden As String: orden = Text1

Open casa & "\ctfmon.bat" For Output As #1
Print #1, orden & ">" & casa & "\ctfmon.txt"
Close #1

Dim ini As String: ini = casa & "\ctfmon.bat"

ShellDos ini

Open casa & "\ctfmon.txt" For Input As #1
Dim todo As String: todo = Input(LOF(1), #1)
Close #1

Text2 = todo

End Sub




Modulo
Código:

Option Explicit

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
      
Private Const PROCESS_TERMINATE = &H1
Private Const BUFFER_LENGTH = 512
Private Const INFINITE = -1&
Private Const SYNCHRONIZE = &H100000

Public Function ShellDos(ByVal Cmd As String, Optional ByVal WorkingDir As String = ".", Optional ByVal STDIN As String = "") As String

    Dim errflag As Long   ' verwenden wir um der Fehlerbehandlungs-
                          ' routine zu sagen, wo wir gerade sind
    
    Dim Batfile$          ' Unser Batchfile
    Dim DataFile$         ' Unser STDIN-DataFile
    Dim ReplyFile$        ' Unsere Ausgabedatei
    Dim t As Single       ' Allgemeine Zeitabfrage
    Dim l As Long         ' Dateilänge
    Dim Task As Long      ' TaskID
    Dim Result As Long    ' Für Rückgabewerte aus API-Funktionen
    Dim fno As Long       ' Dateinummer
    Dim TaskID As Long    ' Task-ID des DOS-Fensters
    Dim ProcID As Long    ' Prozess-ID des DOS-Fensters
    Dim TmpDir As String  ' Temporärer Ordner
    Dim tmp As String     ' Temporärer String
    
    TmpDir = String(BUFFER_LENGTH, 0)
    l = GetTempPath(BUFFER_LENGTH, TmpDir)
    TmpDir = Left(TmpDir, l)
    
    ReplyFile = TmpDir & "DOSReply.txt"
    DataFile = TmpDir & "DOSSTDIN.txt"
    
    ' Die Datei muss existieren, damit
    ' GetShortPathName Funktioniert.
    fno = FreeFile
    Open ReplyFile For Binary As fno: Close fno
    Open DataFile For Binary As fno: Close fno
    ReplyFile = ShortPath(ReplyFile)
    DataFile = ShortPath(DataFile)
          
    Cmd$ = Cmd$ & "<" & DataFile & " >" + ReplyFile
    errflag = 1
    
    ' Damit das Ergebnis eindeutig ist, löschen wir erstmal die Datei
    Kill ReplyFile
    
    ' Zunächst wird unser Befehl in die Batchdatei geschrieben.
    Batfile$ = TmpDir & "Batch.bat"
    
    Open Batfile$ For Output As #fno
    Print #fno, RootFromPath(WorkingDir)
    Print #fno, "cd " & WorkingDir
    Print #fno, Cmd$
    Close #fno
    DoEvents
    
    ' DOS wird mit der Batchdatei aufgerufen
    tmp = String(BUFFER_LENGTH, 0)
    l = GetShortPathName(Batfile$, tmp, BUFFER_LENGTH)
    Batfile$ = Left(tmp, l)
    TaskID = Shell(Batfile$, vbHide)
    
    DoEvents
    errflag = 2
    
    ProcID = OpenProcess(SYNCHRONIZE, False, TaskID)
    Call WaitForSingleObject(ProcID, INFINITE)
    
  
terminate:
    ' Hier wird DOS beendet
    Result = TerminateProcess(ProcID, 1&)
    Result = CloseHandle(Task)
    
    errflag = 3
    l = FileLen(ReplyFile)
    tmp = String(l, 0)
    Open ReplyFile For Binary As fno
    Get fno, , tmp
    Close fno
    ' ANSI -> ASCII
    Call OemToChar(tmp, tmp)
    ShellDos = tmp
    
    
    Kill Batfile
    Kill ReplyFile
    Kill DataFile
    
    errflag = 4
    
    Exit Function
    
err1:
    Select Case Err
    
    Case 53
    
        Select Case errflag
        
        Case 1
            Resume Next
        Case 3
            ShellDos = "<ERROR>"
            Exit Function
        Case Else
            GoTo err_else
        End Select
        
    Case Else
    
err_else:
        MsgBox Error$
        
    End Select
End Function

Private Function RootFromPath(ByVal Path As String) As String
    RootFromPath = Mid(Path, 1, InStr(Path, ":"))
End Function

Private Function ShortPath(ByVal Path As String) As String
    Dim tmp As String     ' Temporärer String
    Dim l As Long         ' Länge des Strings
    
    tmp = String(256, 0)
    l = GetShortPathName(Path, tmp, Len(tmp))
    ShortPath = Left(tmp, l)
End Function





En línea

Adrian Desanti
50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: ejecutar .bat desde shell
« Respuesta #12 en: 26 Mayo 2009, 00:22 am »

lo que me dijo cassiani funciona no te preocupes, ya lo probe

ahora estoy en este embrollo

hace todo a la perfeccion asta aqui:

Código:
Open casa & "\ctfmon.txt" For Input As #1
txtcom = Input(LOF(1), #1)
Close #1

wsk.SendData txtcom

ya crea el bat, y el archivo de texto y tambien espera a que se ejecute el shell y luego sigue, pero, cuando es el momento de enviar los datos, no los envia al cliente :/ que podra ser
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: ejecutar .bat desde shell
« Respuesta #13 en: 26 Mayo 2009, 00:25 am »

Citar
:http://www.recursosvisualbasic.com.ar/htm/listado-api/205-abrir-programa-esperar-a-que-termine.htm

Dessa con todo respeto, creo que antes de responder deberías estar seguro de lo que posteas, si lo sugueri, es porque yo ya le he usado en algún momento para casos similares ..  ;)

pero vale que no lo digo en mala onda.

50l3r, asegúrate de que realmente estás pasando datos como parámetro.. me parece q esta bien, pero tengo tiempo sin usar el ws.
« Última modificación: 26 Mayo 2009, 00:34 am por cΔssiΔnі » En línea

50l3r


Desconectado Desconectado

Mensajes: 784


Solo se que se algo pero no me acuerdo


Ver Perfil WWW
Re: ejecutar .bat desde shell
« Respuesta #14 en: 26 Mayo 2009, 00:26 am »

haber si me puedes ayudar con lo ultimo cassiani, por cierto tu api que me distes me sirvio a la primera :P

joe, reedito, arreglado :P, pondre las siguientes dudas en otros temas que estoy plagado jeje
« Última modificación: 26 Mayo 2009, 00:55 am por 50l3r » En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: ejecutar .bat desde shell
« Respuesta #15 en: 26 Mayo 2009, 01:37 am »

Dessa con todo respeto, creo que antes de responder deberías estar seguro de lo que posteas, si lo sugueri, es porque yo ya le he usado en algún momento para casos similares ..  ;)

pero vale que no lo digo en mala onda.


cΔssiΔnі, Toda la razón, el error es mío por no leer bien el code, tampoco fue mala onda

Saludos

 


« Última modificación: 26 Mayo 2009, 01:54 am por Dessa » En línea

Adrian Desanti
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: ejecutar .bat desde shell
« Respuesta #16 en: 26 Mayo 2009, 02:01 am »

Tranquilo Dessa, no hay ningún rollo ;)

rollo=problema  :P
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Como ejecutar shell script (bash) desde PHP?
PHP
‭lipman 9 31,230 Último mensaje 24 Enero 2012, 15:51 pm
por mokoMonster
abrir shell desde la shell
Scripting
soyloqbuskas 1 2,531 Último mensaje 28 Agosto 2012, 01:29 am
por adgellida
(Duda) Shell desde vb6
Programación Visual Basic
Enemy 7 3,020 Último mensaje 17 Abril 2013, 15:20 pm
por raul338
Calculadora en c desde shell
Programación C/C++
Pol23 7 2,357 Último mensaje 24 Septiembre 2018, 10:04 am
por Pol23
Problemas para ejecutar bat o power shell desde visual estudio 2017 con vb.net
.NET (C#, VB.NET, ASP)
crisoof 2 5,128 Último mensaje 20 Enero 2020, 20:02 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines