Spaces i filstier til marionet på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skal installere noget produkt ved hjælp af Marionet på Windows. Jeg bruger exec-ressource


exec { 'install':
            command => 'C:\windowssystem32cmd.exe /c "c:\Program Files\zabbix\_agentd\_64.exe --config c:\Program Files\zabbix\_agentd.conf --install"',
            }


Syntaks er ok, men jeg får



  'c:/Program' er ikke anerkendt som en intern eller ekstern kommando



Jeg forsøgte også command => 'C:\windowssystem32cmd.exe /c "c:Program Fileszabbix\_agentd\_64.exe --config c:Program Fileszabbix\_agentd.conf --install"' og command => 'C:\windowssystem32cmd.exe /c "c:\Program/Files\zabbix\_agentd\_64.exe --config c:\Program/Files\zabbix\_agentd.conf --install"'
 men det siger syntaksfejl (med rette). Nogle ideer?

Bedste reference


Dukkepotte (sandsynligvis Ruby nedenunder, faktisk) splitter din kommando streng i ord uden hensyntagen til de interne citater. Jeg tror ikke, at der er noget, du kan gøre for at forhindre det, men der er et relateret problem i dukkens bug-tracker. Du kan overveje at kommentere/afstemme dette spørgsmål. Det skal være muligt at angive kommandoen til Exec i Word-split form, som en matrix, som ville give en løsning på dit problem. [4]


Jeg ser to mulige alternativer for at få det til at fungere nu:



  • Brug 8.3-navnet til biblioteket (se hvordan du får DOS-sti i stedet for Windows-sti). Det kan være vanskeligt, fordi jeg ikke tror, ​​at 8,3 stien er entydigt bestemt af filnavnet alene - det kan blive påvirket af navne på søskendefiler og biblioteker.

  • Angiv en PATH for Exec, hvormed den ønskede eksekverbare kan findes, og kør den med det enkle navn.