Pregunta

Quiero invocar:

"c:\(...)\devenv.com" foo.sln /build "Debug|Win32"

usando cmd.exe. En mi experiencia, cmd.exe elimina el primer par de comillas (lo que hace que no se encuentre el ejecutable) o el segundo par de comillas (lo que hace que el carácter de la tubería se malinterprete). ¿Cómo se pasa un carácter de comilla citado a cmd.exe?

¿Fue útil?

Solución

Puede hacerlo de la manera en que lo hace allí, encerrando la cadena con el | entre comillas.

O puede escapar con el acento circunflejo ^:

"c:\(...)\devenv.com" foo.sln /build Debug^|Win32

Como nota al margen: ¿Por qué está creando esto con DevEnv en lugar de MSBuild?

Otros consejos

El carácter de intercalación (^) son caracteres especiales de shell para escapar del carácter para cosas como < ;, > ;, (,), ...

cmd/c "echo Hello ^"  World"

Salida

Hello " World

Aquí hay otra solución (¿solución?) que he encontrado:

primero, asegúrese de que una variable de entorno defina el carácter de la tubería, por ejemplo:
set PIPE="|"

más tarde, ejecute el comando que especifica el nombre de la variable de entorno definida anteriormente:
"c:\(...)\devenv.com" foo.sln /build Debug%PIPE%Win32

Eso hace el trabajo incluso si hay varios contenedores entre la persona que llama y la persona que llama. Ahora lo estoy usando con una cadena muy larga de envoltorios: Python / Linux - & Gt; VirtualProx guest's executeProcess - & Gt; Cmd / Windows - & Gt; devenv.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top