Confessions of a Dangerous Mind

Brain.FlushBuffer()
posts - 176, comments - 234, trackbacks - 93

La funzione GetCommandLineArgs ed il parsing degli argomenti

Oggi un mio collega, Sebastiano, mi ha fatto notare un problema che affligge la funzione System.Environment.GetCommandLineArgs(). Questa funzione, peraltro molto utile, ritorna in un'array di stringhe la lista dei parametri della riga di comando di un eseguibile. In un caso, però, bisogna prestare un pò di attenzione, in quanto se si passano argomenti di tipo "percorso", ovvero del tipo C:\MyFolder\ si può incorrere in un banale errore.

Per ricrearlo basta crere un piccolo esempio di console application ed impostare come parametri della command line:

  • MySimpleConsoleApp.exe par1 par2 "C:\My Folder\AnotherFolder\Destination\" par3

Gli apici di delimitazione devono essere inseriti, in quanto nel percorso è presente uno spazio, ma... c'è un ma! La funzione GetCommandLineArgs() ritornerà i seguenti parametri:

  • MySimpleConsoleApp.exe
  • par1
  • par2
  • C:\My Folder\AnotherFolder\Destination" par3

Sì, avete letto bene...l'ultimo parametro è "sbagliato" in quanto l'accoppiata \" viene considerata un'escape di ". Il problema è facilmente risolvibile operando un raddoppio dell'ultima barra "\\" ma comunque occhi aperti quando avete a che fare con percorsi come parametri di riga di comando.

Print | posted on giovedì 13 luglio 2006 21:07 |

Feedback

Gravatar

# re: La funzione GetCommandLineArgs ed il parsing degli argomenti

se prima del path metti @ dovrebbe andare

MySimpleConsoleApp.exe par1 par2 @"C:\My Folder\AnotherFolder\Destination\" par3
13/07/2006 21:57 | Daniele
Gravatar

# re: La funzione GetCommandLineArgs ed il parsing degli argomenti

Già provato; il risultato è che l'ultimo parametro viene estratto come:
@C:\My Folder\AnotherFolder\Destination" par3
14/07/2006 03:32 | Davide Senatore
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET