2009-02-03 22 views
6

Me falta algo (¿obvio?) Sobre el escape de mis cadenas o espacios en el siguiente comando de Windows Server 2k3 por lotes.¿Cómo decirle a FORFILES que ejecute Command en Path?

FORFILES -m *.wsp -c "CMD /C C:\Program^ Files\Common^ Files\Microsoft^ Shared\web^ server^ extensions\12\bin\stsadm.exe^ -o^ addsolution^ -filename^ @FILE" 

Resultados en el siguiente error

'C: \ web server extensions Archivos de programa \ Archivos comunes \ Microsoft Shared \ \ 12 \ bin \ stsadm.exe addsolution -filename "foobar. wsp "'no se reconoce como un comando interno o externo, programa operable o archivo por lotes.

Pero no puedo entender por qué. Estoy trabajando fuera de Mr. Simon Sheppard's fine documentation

Respuesta

9

La ruta necesita ser citada, y la cita debe ser escapada.

FORFILES -m *.wsp -c "CMD /C ^0x22C:\Program^ Files\Common^ Files\Microsoft^ Shared\web^ server^ extensions\12\bin\stsadm.exe^0x22 -o^ addsolution^ -filename^ @FILE" 

Un compañero de trabajo sugirió utilizar el hexadecimal para", y finalmente dimos cuenta de que el hexágono necesitaba escapar.

+0

Gracias me has salvado. – guanome

2

Otra respuesta posible es utilizar los viejos nombres 8.3 se obtiene al hacer dir/X .

igual: C: \ ~ 1 en lugar de C:.! \ archivos de programa

Cuestiones relacionadas