Me gustaría ser capaz de llamar a los siguientes comando cmd desde dentro de un script vbs:

cmd Client\setupclient.exe /q /targetdir "c:\program files\Microsoft CRM"

Se me ocurrió la siguiente script vbs:

Set oShell = WScript.CreateObject ("WScript.Shell") 
oShell.Run "cmd /c Client\setupclient.exe /q /targetdir c:\program files\Microsoft CRM", 1, true

Como que a mí respecta, esto iba a funcionar correctamente si la targetdir no tenía espacios, e.g c:\bla. A continuación, la aplicación se instala en esa carpeta en concreto.

La pregunta obvia es, ¿cómo puedo definir el targetdir con espacios como la ubicación de ruta de acceso.

Traté de que la rodean con el’ ‘, pero eso no funciona para mí. Alguna sugerencia?

Saludos
chris

InformationsquelleAutor chr1s | 2010-08-11

4 Comentarios

  1. 4

    Rutas con espacios están normalmente cerrados en caracteres de comillas ("). En VBScript, para insertar un carácter de comillas en una cadena de utilizar comillas dobles (""). Así, el código debe tener este aspecto:

    oShell.Run "cmd /c Client\setupclient.exe /q /targetdir ""c:\program files\Microsoft CRM""", 1, true

    También, no estoy seguro de si cmd /c que en realidad es necesario aquí, así que se puede trabajar de esta manera así:

    oShell.Run "Client\setupclient.exe /q /targetdir ""c:\program files\Microsoft CRM""", 1, true
  2. 0

    Terminé con

    AMPath = "E:\Program Files (x86)\Dropbox\Client\Dropbox.exe"
    If FileSyst.Fileexists(AMPath) Then 
     AMPath = chr(34) & AMPath & chr(34)
    OBJ_Shell.run (AMPath)
    End If 
  3. 0

    1、Si su sistema operativo lo soporta nombre de archivo 8.3,usted puede tratar de nombre de archivo corto:

    cd c:\
    dir /x
    2017/04/17  20:53    <DIR>          PROGRA~1     Program Files
    2017/04/18  03:40    <DIR>          PROGRA~2     Program Files (x86)

    A continuación, cambiar C:\Program Files\ con PROGRA~1.

    2、uso de dos comillas dobles dentro de la ruta de acceso completa.

    WScript.CreateObject("WScript.Shell").Run """C:\Program Files\DirName\FileName.exe"" /option1 value1 /option2 vaule2 argv3"
  4. 0

    Este no es exactamente el problema descrito, en el que el llamado programa en lugar de un parámetro contiene un espacio. Buscar en google «whshell.ejecutar no funciona si el nombre del archivo contiene espacios en blanco» me tiene aquí.

    Cuando el programa contiene un espacio en su nombre, tiene que ser el triple de la cotización. (El inicio y final de las cotizaciones de definir una cadena con espacios en blanco y la encerrados entre comillas dobles se asignan a las comillas simples dentro de esa cadena.) Hay dos ejemplos de trabajo. El primero se utiliza triple comillas. La segunda efectivamente elimina los espacios en blanco desde el nombre. El que no trabaja, se muestran ejemplos de lo que no se debe hacer (y lo he intentado en primer lugar.)

    ' Drive D:\Program Files\Batch\Monitor.bat with no associated command window
    
    Set WshShell = CreateObject("WScript.Shell")
    
    ' These methods work: (Select one)
      Return = WshShell.Run("""D:\Program Files\Batch\Monitor.bat""", 0)
    ' Return = WshShell.Run("D:\.D-DISK\Monitor.bat", 0)
    ' Note: Here "D:\.D-DISK\Monitor.bat" is a symbolic link to
    '       "D:\Program Files\Batch\Monitor.bat"
    
    ' The following methods fail because of the space in the filename.
    ' WshShell.Run( chr(34) & D:\Program Files\Batch\Monitor.bat & Chr(34), 0 )
    ' Return = WshShell.Run("D:\Program Files\Batch\Monitor.bat", 0)
    ' Return = WshShell.Run(""D:\Program Files\Batch\Monitor.bat"", 0)
    
    Set WshShell = Nothing

Dejar respuesta

Please enter your comment!
Please enter your name here