Autor
|
Tema: Command$ extraer archivos. (Leído 7,165 veces)
|
LeandroA
|
Hola una pregunta, como puedo obtener la lista de archivos de la linea de argumentos Command$ por ejemplo: C:\Proyecto1.exe "C:\reto 123.exe" C:\imagen.png cuando la ruta de un archivo tiene espacio windows pone " , de lo contrario solo separa un archivo de otro con espacios cual es la logica para estraer los archivos de la linea de comando. Saludos.
|
|
|
En línea
|
|
|
|
seba123neo
|
Hola, Leandro, claro, pasa lo mismo cuando queres ejecutar un archivo desde un path con espacios desde el ejecutar de windows o desde la consola, para eso esta el path corto, pero me imagno que haciendo un split por los espacios y despues reemplazando las comillas no hay problema no ?
saludos.
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Ya seba123neo, pero si el archivo lleva comillas?  A mi se me ocurre algo así: Public Function GetFiles(ByVal strText As String) As Collection Dim cTemp As New Collection Dim oRegExp As Object Dim oMatch As Object Dim oMatches As Object Set oRegExp = CreateObject("VBScript.RegExp") 'Evitamos la referencia With oRegExp '// Sería similar a esta, lo único modificar los [\w\s\.] para que acepten algunos símbolos más... xP .Pattern = "\s?([\w\s\.]+\:\\([\w\s\.]+\\?)[\w\s\.]+(\.\w{1,})?)\s?" '// No incluye verificación de ruta (pero... ¿no hace falta no?) .Global = True .IgnoreCase = True End With Set oMatches = oRegExp.Execute(strText) For Each oMatch In oMatches cTemp.Add oMatch.SubMatches(0) Next Set GetFiles = cTemp End Function Private Sub Form_Load() Dim vItem As Variant Const S As String = "C:\Frog\Proyecto1.exe ""C:\reto 123.exe"" C:\imagen.png" For Each vItem In GetFiles(S) MsgBox vItem Next End Sub
Ojalá te sirva  DoEvents! 
|
|
« Última modificación: 13 Febrero 2011, 19:44 pm por Mr. Frog © »
|
En línea
|
|
|
|
seba123neo
|
que yo sepa un nombre de archivo no puede tener comillas dobles...
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
que yo sepa un nombre de archivo no puede tener comillas dobles... Oops  Fallo mio...  No me di cuenta, aún así mi manera es correcta  Lo que queria decir es que si haces Split() para sacar los nombres usando " " como delimitador, te cortará el la ruta en trozos suponiendo que este lleve espacios dentro.  DoEvents! 
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Y no necesariamente tienen que estar la ruta entera del archivo. Hay programas que funcionan con archivos en el mismo directorio de trabajo, ej C:\framework\proyecto1.exe archivo1.txt archivo1.txt esta en la misma carpeta. La logica seria primero extraer todo lo que esta entre comillas, y luego separar el resto por espacios 
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Ahi va rusticamente  Sub getFiles(ByVal args As String, res() As String) Dim i As Integer Dim e As Integer Dim sTmp As String i = InStr(args, Chr$(34)) While i > 0 e = InStr(i + 1, args, Chr$(34)) sTmp = Mid(args, i, e) args = Replace(args, sTmp, Replace(Mid(sTmp, 2, Len(sTmp) - 2), " ", "|")) i = InStr(e, args, Chr$(34)) Wend args = Replace(args, " ", "*") args = Replace(args, "|", " ") res = Split(args, "*") e = 0 For i = 0 To UBound(res) - 1 If res(i + 1) = "" Then i = i + 1 ElseIf res(i) = "" Then res(i) = res(i + 1) i = i - 1 e = e + 1 End If Next If e > 0 Then ReDim Preserve res(e - 1) Else 'Erase res <---- ReDim res(0) End If End Sub
|
|
|
En línea
|
|
|
|
LeandroA
|
Hola, no funcionan, la de ignorantev1.1 no me devuelve nada, y la de Mr. Frog me esta devolviendo el path y cortado proba con este ejemplo "C:\Documents and Settings\Administrador\Escritorio\proRegEdit.exe" "C:\Documents and Settings\Administrador\Escritorio\MSNOIE8_ESES_XP.EXE" Saludos.
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Disculpa LeandroA tenia un errocito  listo! Sub getFiles(ByVal args As String, res() As String) Dim i As Integer Dim e As Integer Dim sTmp As String i = InStr(args, Chr$(34)) While i > 0 e = InStr(i + 1, args, Chr$(34)) sTmp = Mid(args, i, e) args = Replace(args, sTmp, Replace(Mid(sTmp, 2, Len(sTmp) - 2), " ", "|")) i = InStr(e, args, Chr$(34)) Wend args = Replace(args, " ", "*") args = Replace(args, "|", " ") res = Split(args, "*") e = -1 For i = 0 To UBound(res) - 1 If res(i + 1) = "" Then i = i + 1 ElseIf res(i) = "" Then res(i) = res(i + 1) i = i - 1 e = e + 1 End If Next If e > 0 Then ReDim Preserve res(e - 1) ElseIf e = 0 Then 'Erase res <---- ReDim res(0) End If End Sub
|
|
|
En línea
|
|
|
|
LeandroA
|
jaj es complicado ahora fijate que con el primer ejemplo no funciona C:\Proyecto1.exe "C:\reto 123.exe" C:\imagen.png yo lo intente pero me saco.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Extraer archivos...
Programación Visual Basic
|
akss_wm
|
1
|
1,855
|
21 Diciembre 2005, 04:12 am
por maxnet
|
|
|
Como Extraer archivos de un ejecutable
Multimedia
|
abe786
|
3
|
16,148
|
30 Marzo 2006, 05:26 am
por abe786
|
|
|
Extraer archivos .rar
GNU/Linux
|
dj_tora
|
5
|
7,085
|
22 Agosto 2010, 23:57 pm
por B€T€B€
|
|
|
Ayuda extraer archivos
Ingeniería Inversa
|
tbgio
|
5
|
3,345
|
14 Julio 2011, 21:41 pm
por tbgio
|
|
|
extraer, editar y reemplazar archivos de un exe
Dudas Generales
|
Vortex19
|
4
|
7,898
|
26 Octubre 2011, 21:45 pm
por Vortex19
|
|