| 
	
		|  Autor | Tema: Command$ extraer archivos.  (Leído 7,677 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.pngcuando 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 CollectionDim cTemp                       As New CollectionDim oRegExp                     As ObjectDim oMatch                      As ObjectDim 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 = cTempEnd Function Private Sub Form_Load()Dim vItem                       As VariantConst S                         As String = "C:\Frog\Proyecto1.exe ""C:\reto 123.exe"" C:\imagen.png"    For Each vItem In GetFiles(S)        MsgBox vItem    NextEnd 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 IfEnd 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 IfEnd 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.pngyo 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,947 |  21 Diciembre 2005, 04:12 am por maxnet
 |  
						|   |   | Como Extraer archivos de un ejecutable Multimedia
 | abe786 | 3 | 16,377 |  30 Marzo 2006, 05:26 am por abe786
 |  
						|   |   | Extraer archivos .rar GNU/Linux
 | dj_tora | 5 | 7,345 |  22 Agosto 2010, 23:57 pm por B€T€B€
 |  
						|   |   | Ayuda extraer archivos Ingeniería Inversa
 | tbgio | 5 | 3,577 |  14 Julio 2011, 21:41 pm por tbgio
 |  
						|   |   | extraer, editar y reemplazar archivos de un exe Dudas Generales
 | Vortex19 | 4 | 8,297 |  26 Octubre 2011, 21:45 pm por Vortex19
 |    |