Cadena string (Direccion con espacios error)

Iniciado por rigorvzla, 24 Diciembre 2017, 17:17 PM

0 Miembros y 1 Visitante están viendo este tema.

rigorvzla

hola mi gente , les traigo una inquietud, como se puedo hacer que este codigo, tome la direccion tal cual completa, por que asi como la tengo toma el primer nombre y omite lo demas creando una carpeta llamada "Biblioteca" y no como realmente quiero sque se llame.

string pathDestination = @"C:\Biblioteca AIRH\Comprimidos\";
                ProcessStartInfo p = new ProcessStartInfo();               
                p.FileName = @"Procesos\7z.exe";
                p.Arguments = "a " + pathDestination + targetName+ " @listfile.lst" + " -t7z -mx=9";             
                p.WindowStyle = ProcessWindowStyle.Hidden;
                Process x = Process.Start(p);
...
...


la idea es que guarde el archivo en la direccion que se menciona arriba en cambio lo que hace es guardarlo en C:\ con el nombr biblioteca.7z que se debe hacer?

Eleкtro

#1
Cita de: rigorvzla en 24 Diciembre 2017, 17:17 PM
que se debe hacer?

Esto es una regla básica de toda la programación en general: al llamar a un programa command-line, los argumentos con espacios en blanco debes encerrarlos entre comillas dobles. ej. "C:\Ruta con espacios".

A todo esto, te he mostrado decenas de veces como evitar fallos tontos por el abuso del operador "+" en concatenaciones engorrosas de string, usando en su lugar la función string.Format(). Revísate los comentarios, por que te lo he mostrado varias veces y en varias preguntas distintas.

De hecho, te lo he estado mostrando desde el primer día de tus preguntas en el foro con mi primera respuesta:
Cita de: Elektro
Código (csharp) [Seleccionar]
Arguments = string.Format("a -t7z -mx=9 -mmt=on -ms=on \"{0}\" \"{1}\"", dstFilePath, srcFilePath),

Intenta tomar los ejemplos que se te dan.

Saludos!








rigorvzla

#2
creeme que tomo los ejemplos de todos los que me ayudan y mucho , pero es que no aplico los parametros como son , por lo visto por eso doy el codigo aqui a ver como otra persona lo hace, es posbile que lo eh realizao casi bien y no es casi, y creeme que volver atras ahorita me ayuda mucho a entender incluso eh usado respuestas tuyas previas que antes no entendia y que ahora ya las veo mejor, pero este me comio jaja, por otro lado ya consegui slucion al problema que tenia y te envie por privado era una tonteria que ni siquiera supe de donde salio, pero gracias de todos modos.

Aun tengo el problema de la direccion y viendo el ejemplo que tu me enviaste hace tiempo no encuentro como ejecutarlo osea en codigo esta bien pero no se como llamarlo para que cumpla la accion jeje me podrias decir como llamas a tu ejemplo?
Podrias aparte de eso colocar en el codigo que deje arriba la forma correcta para que es al comprimir lo deje ahi que no se que hacer ya.

**Aincrad**

Prueba esto :

codigo 1 :

Código (vbnet) [Seleccionar]
Dim targetName = "fileppppppp"
        Dim pathDestination As String = "C:\Biblioteca AIRH\Comprimidos\"
        Dim Prm As New Process
        Dim Psis As New ProcessStartInfo("Procesos\7z.exe")
        Psis.Arguments = ("a " & pathDestination & targetName & " @listfile.lst" & " -t7z -mx=9")
        Prm.StartInfo = Psis
        Prm.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        Prm.Start()



o este otro :


Código (vbnet) [Seleccionar]
Dim srcFilePath = ""
        Dim dstFilePath = "C:\Biblioteca AIRH\Comprimidos\"
        Dim Prm As New Process
        Dim Psis As New ProcessStartInfo("Procesos\7z.exe")
        Psis.Arguments = ("a -t7z -mx=9 -mmt=on -ms=on"{0}\" \"{1}\"", dstFilePath, srcFilePath)
        Prm.StartInfo = Psis
        Prm.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        Prm.Start()


dime si funciono o no . 




rigorvzla

de fabula, gracias mira una pregunta porfavor espero me expliques en el segundo codigo salen {1}{0} porque? que hacen para que sirven y su finalidad que aun no lo entiendo.

Gracias Aincrad (te viste SOA pillin ) jeje muy buena.

Eleкtro

#5
Te diría lo que ya te dijo el compañero @NEBIRE en aquél post de "Consulta 1"... pero no creo que valga la pena, tampoco quiero torturar a nadie más de la cuenta, si no quieres buscar y leer la documentación oficial cada vez que tengas este tipo de dudas para aprender, que le vamos a hacer.

Te explico, "{n}" es el índice de los argumentos especificados a la derecha del formato de texto.

Esto es una demostración y un simple juego de palabras... por llamarlo de alguna forma:
Código (vbnet) [Seleccionar]
String.Format("Yo soy {1}, tú eres {0}, él es {2}, todos somos {0}, {1} y {2}.", "cero", "uno", "dos")









rigorvzla

si ya vi la consulta 1, bueno ya lo tengo mas claro elektro gracias por tu respuesta.