Newsgroup: it.comp.os.win.windows7
Titolo: [OT?] Powershell - Il quesito dell'ultimo dell'anno

Faccio un esempio che e` piu` pratico.
Uso notepad come programma di test (che mi sono copiato nella cartella 
di test), ma uno vale l'altro.
 
Iniziamo.
 
Questo correttamente apre il notepad. Ovvio.
Start-Process "C:\Windows\notepad.exe"
 
Se invece nel path c'e` uno spazio, ecco che non funziona.
Non da errori. Niente. Vuoto. Silenzio.
Start-Process "C:\temp\tmp pippo\notepad.exe"
 
Spesso path di prima, ma specifico viene passato come argomento.
Funziona, com'e` giusto che sia.
Start-Process "notepad.exe" -WorkingDirectory "C:\temp\tmp pippo"
 
 
Perche` Start-Process "C:\temp\tmp pippo\notepad.exe" non va?
 
Piu` in generale, perche` se e` presente uno spazio nel path la chiamata 
fallisce completamente?
 
 
Ora, buon anno a tutti.
 
--
none
 

 fallisce completamente?
 
perché per come tutti gli eredi dei dinosauri del DOS lo spazio è un
delimitatore/separatore, si risolve mettendo gli apici che sono la
"pezza" per retrocompatibilità.
 
Per ogni comando DOS/console viene settata la variabile errorlevel
di sistema


Per ogni comando DOS/console viene settata la variabile di sistema
errorlevel, se lasciata a zero (in succo) significa "tutto bene comando
eseguito correttamente", se ha un valore significa che c'e' stato un
errore, esempio spiccio:
 
dir PZPZPZ > nul:
echo %errorlevel%
 
darà 1 (se non esiste un file di nome PZPZPZ)
 
dir . > nul:
echo %errorlevel%
 
darà 0 (esiste la directory .)

 "pezza" per retrocompatibilità.
<cut>
 
Ti do ragione sulla teoria.
 
Scusa se te lo chiedo -non e` per polemica, questa cosa mi fa andare 
fuori di testa- ma hai provato a fare il mio stesso test?
 
Io non sono riuscito in alcun modo. Apici singoli, doppi, controapici 
... niente.
 
 
 
-- 
none

 niente.
 
Ma errorlevel cosa dice ? questo "notepad.exe" che tenti di lanciare
e' fisicamente presente nella cartella ?

 fallisce completamente?
 
A me non funziona anche se tolgo lo spazio dal nome della cartella,
quindi non penso sia una questione di spazio. Per capirci, un
 
& 'C:\tmppippo\notepad.exe'
fallisce, laddove, come già detto,
& 'C:\windows\notepad.exe'
funziona.
 
A questo punto delle prove ho pensato fosse una questione di diritti;
ho provato, al volo, a mettere Full Control per Everyone e rendere
Everyone proprietario sulla copia di notepad che avevo messo nella
cartella temporanea, nonché su tutte le cartelle del path, ma non ha
funzionato neanche così... e in questo momento non ho tempo di fare
ulteriori prove :-(
 
*********************************
*ULTIM'ORA*
 
Prima di inviare mi è venuta in mente una cosa. Ho provato a mettere
un altro eseguibile qualunque al posto di notepad... indovina un po'?
 
& 'C:\TEMP\TMP pippo\wisecare.exe'
funziona perfettamente.
& 'C:\TEMP\TMP pippo\notepad.exe'
continua a non andare. Ho idea che da qualche parte ci sia qualcosa
di hardcoded... o io non ho lavorato correttamente su diritti e
proprietà. Ho controllato e mi sembrano identici, ma boh.
Di Alternate Data Streams non ce ne sono, ho guardato.
 
Bye, G.


Non segnala nessun errore.
Come se l'avesse eseguito correttamente, ma in realta` non fa nulla.
 
Ovviamente il programma e` presente.
 
Come dicevo prima
   Start-Process "notepad.exe" -WorkingDirectory "C:\temp\tmp pippo"
funziona senza problemi.
 
Mentre
   Start-Process "C:\temp\tmp pippo\notepad.exe"
non fa nulla e non segnala errori.
 
-- 
none

 Di Alternate Data Streams non ce ne sono, ho guardato.
 
In realta` devo far partire scanpst, ma ovviamente non andava. Quindi 
per i test sto usando notepad. Provo con un altro exe ...
 
...
 
ed effettivamente si ... ho provato con mailpv.exe e funziona!
 
Grazie, mi hai dato lo spunto per capire che e` l'accoppiata di 
path_con_spazio e programma_chiamato a dare problemi.
E se il programma ha quel 'qualcosa' che non gli piace, la chiamata 
fallisce.
 
Ovviamente scanpst ha questo 'qualcosa'. Ottimo.
 
 
-- 
none