Esecuzione di cmd.exe da Cygwin


16

Mi piacerebbe usare Cygwin per la mia shell principale al lavoro, ma il mio gruppo utilizza file batch per diversi processi. Mi è stato detto che posso fare solo cmd /c batch.batper eseguire il file batch da Cygwin. Questo funziona per alcuni casi e non per altri. Uno dei file batch fallisce completamente quando lo faccio, ma funziona bene quando lo eseguo dalla shell cmd.

Un'altra stranezza che ho notato è che se corro cmd /?da Cygwin, non ottengo alcun output. Eseguire questo dalla shell cmd fornisce l'aiuto standard. Anche facendo cmd /c cmd /?non fornisce alcun output. Se corro cmdda Cygwin, mi dà la shell cmd, e quindi se corro cmd /?, ottengo il testo di aiuto, ma senza le interruzioni di pagina.

Immagino che la prossima cosa da provare sia trovare un modo per lanciare effettivamente cmd nella sua finestra distinta, come se tu fossi andato su Start-> Esegui, e quindi digitato "cmd". C'è un modo per farlo dall'interno di Cygwin?

Risposte:


8

/?viene trattato come un modello da bash, in cui il punto interrogativo si adatta a un singolo carattere, quindi se nella directory Cygwin sono presenti file o directory di una lettera, il modello verrà sostituito con quelli. echo /?ti mostrerà se è quello che sta succedendo. Si può sfuggire il punto interrogativo con un backslash: /\?. O citare l'intero argomento: '/?'.

cygstart c:/windows/system32/cmd avvierà cmd.exe nella sua finestra.


sul mio win xp sp2 latop questo frammento di codice seguente funzionerebbe: cygstart / cygdrive / c / WINDOWS / system32 / cmd
Michael Mao

14

È possibile eseguire direttamente un file batch da una shell Cygwin, non è nemmeno necessaria la chiamata intermedia per cmd. Se il file batch richiede argomenti, devono essere quotati alla moda di Windows; potrebbe essere più semplice da eseguire cmd /c 'foo.bat "quoted arguments"'.

Non dici in quale terminale stai eseguendo la shell. I file batch da soli non se ne preoccupano, ma potrebbero essere i comandi eseguiti dai file batch. Gli emulatori di terminali Cygwin non emulano le console di Windows, quindi sono utili per i programmi Cygwin e per i programmi solo stdio ma non per i programmi della console di Windows.

Se normalmente si eseguono shell Cygwin in un terminale Cygwin (come rxvt o mintty), è possibile eseguire i file batch problematici in una console Windows separata con start foo.bat. Potresti voler eseguire Console2 come un sostituto migliore per la console di Windows ed eseguire le applicazioni della console di Windows nelle applicazioni Console2 e Cygwin in un terminale Cygwin (o anche in Console2).

cmd /?è un'aringa rossa: presumibilmente ci sono directory di un carattere nella directory principale di Cygwin, quindi la shell si espande /?e funziona cmdcon switch che non producono alcun output.


Avevo bisogno di incollare le variabili di shell negli argomenti cmd, quindi ho pensato che ciò potesse aggirare i parser Bash e cmd: u = 'DOMAIN \ ACC' p = 'X <12' r = '{Baz 3.1 5-x - (TTT )} 'd = $' \ "'cmd / c foo.bat -u% d %% u %% d% -p% d %% p %% d% -fooBar% d %% r %% d% - fooBAR true
eel ghEEz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.