Esecuzione automatica dei comandi all'apertura di un prompt dei comandi


21

Sto cercando un modo per eseguire automaticamente alcuni comandi della console quando viene aperto un prompt dei comandi in Windows, in particolare per impostare alcuni alias di comando.

Ad esempio, quando viene aperto un prompt dei comandi, voglio che un comando come il seguente venga eseguito automaticamente in modo da poterlo utilizzare al lsposto di dir.

doskey ls=dir

Come si può fare?


possibile duplicato di
Esegui

3
Windows XP non ha DOS.
user1686

@KContreau, interessante. Quindi sarebbe il motivo per cui i miei batch non salvano le sostituzioni di doskey dopo un comando "start / separate", ma solo con "cmd / k" o "cmd / c" ...
kokbira,

dobbiamo cambiare il titolo della domanda o no dopo l'edizione "Chiarimento"?
Kokbira,

1
@KCotreau: Tecnicamente, fa parte del sottosistema della console Win32, non specifico cmd.exe.
user1686

Risposte:


9

Se si desidera che venga caricato all'avvio, anziché quando si accede, se si dispone di XP Pro (XP home non include gpedit.msc), procedere come segue:

Start> Esegui> gpedit.msc

e premi invio. Quindi eseguire gpupdate / force da una riga di comando.

Vai a

Configurazione computer> Impostazioni di Windows> Script> Avvio

e aggiungi la posizione allo script.

Puoi anche farlo per un accesso utente in

Configurazione utente> Impostazioni di Windows> Script> Avvio

Se hai XP Home, puoi copiare gli script in uno dei seguenti modi:

C: \ Windows \ System32 \ GroupPolicy \ Machine \ Scripts \ Startup

per caricarli all'avvio, oppure:

C: \ Windows \ System32 \ GroupPolicy \ User \ Scripts \ Logon

per caricarli per un utente all'accesso. La cartella GroupPolicy è nascosta.


1
Preferirei questo metodo per inserirlo nella cartella di avvio. Lo rende più permanente.
Joe Taylor,

1
@Joe Taylor Grazie. Ad essere sincero, uso la cartella Startup solo per cose come l'avvio di Outlook. Questo è un modo più standard di farlo dal punto di vista dell'amministrazione del sistema.
KCotreau,

@KContreau, la tua soluzione è molto utile, ma non per quel caso. Ho provato ma non ha funzionato per il comando di sostituzione doskey ...
kokbira il

@kokbira La domanda originale era semplicemente "Come eseguire uno script all'avvio in XP?", a cui penso di aver risposto con precisione. Ha modificato e aggiunto la parte "ad esempio, e doskey ls = dir" dopo.
KCotreau,

1
@KContreau, hai ragione, il suo problema è che il titolo di questa domanda non è corretto. In "Chiarimento" ha detto che vuole "eseguire alcuni comandi DOS quando avvio un prompt DOS, principalmente per impostare alcuni alias ". Per eseguire alcuni comandi all'avvio di Windows, la soluzione è ok, ma per eseguire gli alias non lo è.
Kokbira,

47

Gli alias di comando sono specifici della finestra della console su cui li configuri, pertanto uno script di avvio non funzionerà. Puoi farlo in questo modo:

  1. Crea un file batch ( .cmd) con i tuoi comandi doskey , mettilo da qualche parte in Dati applicazioni.

  2. Configuralo per l'avvio automatico ogni volta che apri cmd . L'impostazione è nel registro:

    • chiave: HKCU\SOFTWARE\Microsoft\Command Processor
    • valore: AutoRun
    • digitare: REG_EXPAND_SZ
    • dati: "%AppData%\aliases.cmd"

1
Questa è stata un'ottima soluzione per un sistema operativo virtuale Win2K in cui volevo che il prompt dei comandi caricasse sempre i percorsi del mio compilatore. L'unica differenza era l'uso di REG_SZ invece di REG_EXPAND_SZ
James,

Questa è una bella soluzione. Per caso, c'è un modo per sopprimere l'output iniziale?
nburr,

1
@Nickolas: reindirizzare i comandi su NUL come sempre?
user1686

Funziona magnificamente TUTTAVIA potrebbe interferire con il compilatore di risorse di Windows (rc.exe) causando errori come "Il sistema non riesce a trovare il percorso specificato." Vedi il progetto isolato di Visual Studio Shell non viene compilato .
Utente 5910

Ho risolto questo problema controllando prima l'esistenza del file:if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
Utente 5910

4

Diversi interpreti di comandi gestiscono gli alias di comando in diversi modi.

Il CMD di Microsoft si affida al sottosistema della console Win32 per fornire il meccanismo di alias dei comandi. Il doskeycomando in realtà interagisce con la console del processo ed è la console stessa a contenere alias. Pertanto gli alias sono per console e transitori.

TCC / LE di JP Software gestisce gli alias stessi. Il aliascomando consente di visualizzare e manipolare gli alias, che sono "locali" o "globali". Gli alias sono ancora temporanei, ma sono privati ​​di un processo dell'interprete dei comandi o condivisi tra tutti i processi dell'interprete dei comandi (su tutte le console).

Conchiglie come la shell Korn nel toolkit dell'utilità SFUA - i cui strumenti vengono eseguiti nel sottosistema per applicazioni basate su UNIX che è disponibile nella confezione con Windows 7 Ultimate Edition e Windows Server 2008 R2 (per Windows XP, è possibile scaricare e installare Servizi per UNIX versione 3.5 .) - e la shell Bourne Again di Cygwin gestiscono allo stesso modo gli alias stessi. Gli alias sono transitori e per processo dell'interprete per comando.

Il caricamento automatico di un set iniziale predefinito di alias varia anche in base all'interprete dei comandi.

In tutti i casi, si posizionano i comandi per impostare gli alias in uno script di qualche tipo.

grawityha già fornito una delle due chiavi di registro che causano l'esecuzione del comando CMD di Microsoft all'avvio . Sfortunatamente, questo è un processo per interprete di comando, anche se gli alias stessi sono memorizzati per console . Avvia un interprete di comandi secondario da quello iniziale e tutte le modifiche manuali agli alias predefiniti verranno ripristinate. Un'alternativa, che almeno esegue l'inizializzazione una sola volta per console, è quella di aggiungere l' /Kopzione e il nome di uno script di comando che chiama doskeyalla coda dei comandi nel collegamento che avvia l'interprete dei comandi.

TCC / LE di JP Software esegue automaticamente lo TCSTARTscript all'avvio. Ancora una volta, questo è un processo per interprete di comando. Tuttavia, gli alias "locali" di TCC sono anche un processo per interprete di comandi, quindi questo è il posto giusto per inizializzare gli alias se si utilizzano alias locali. Per gli alias globali, è sufficiente creare un collegamento nella Startupcartella che carica gli alias da un file (con alias /r) e quindi esegue il shraliascomando in modo che persistano al termine dell'esecuzione del collegamento.

Per le shell Bourne Again e Korn, fare semplicemente come si farebbe con queste shell su qualsiasi altra piattaforma. Utilizzare il aliascomando negli script $HOME/.profilee $HOME/.bashrcper la shell Bourne Again; e usa il aliascomando in $HOME/.profile, ENV e gli $HOME/.kshrcscript per la shell Korn.


2

La risposta di Gravity ha funzionato benissimo per me.

Ho creato uno script shell-aliases.cmd nella mia cartella Documenti (da qualche parte lo troverò in seguito).

Quindi creato il valore di stringa espandibile "AutoRun" nella chiave di registro:

'HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor'

Imposta il valore sul percorso completo del file alias (il mio era in 'C: \ Users \ Lee \ Documents \ shell-aliases.cmd').

Una volta ricaricato il prompt dei comandi, i miei alias doskey hanno funzionato. Inoltre, il mio file alias è facilmente accessibile e pronto per essere modificato poiché penso di aggiungere altro.


0

Ci sono diverse posizioni che lo faranno, ma il menu di avvio> cartella di avvio è probabilmente il più semplice.

Esegui 'msconfig' e vedi quali programmi si avviano e perché. Puoi semplicemente aggiungere il tuo programma a uno di quegli elenchi (ad esempio, nel registro).


0

Il problema qui è che se lo fai all'avvio, queste sostituzioni sarebbero disponibili solo nel prompt CMD aperto. Se si chiude, tutte queste sostituzioni andranno perse e dovranno essere ripetute per ogni prompt dei comandi aperto.

Quindi, alcuni modi alternativi (puoi combinarli):

I. Creare un batch e un collegamento:

  1. Crea un batch con queste macro e salvalo in un luogo noto (ad es. C: \ apps \ mycmd.bat).
  2. Crea un collegamento sul desktop (o dove vuoi) mettendo "cmd / k" prima del suo percorso (es. "Cmd /kc:\apps\mycmd.bat").
  3. Quindi tutti i tuoi comandi verranno eseguiti ogni volta che apri quel collegamento.

II. Creare un batch e una voce nella variabile di ambiente PATH:

  1. Crea un batch con queste macro e salvalo in un luogo noto (ad es. C: \ apps \ mycmd.bat).
  2. Vai su Pannello di controllo> Sistema> Configurazioni avanzate> Avanzate> Variabili di ambiente.
  3. Nelle voci Utente o Sistema, cerca una variabile denominata PERCORSO. Fai doppio clic su di esso e, alla fine, inserisci ";" e il percorso della tua BAT (ad es. "c: \ apps \" => "string_stringa precedente; c: \ apps \"), quindi Ok e Ok.
  4. Pertanto, quando si utilizza un cmd (o in un file BAT), inserire semplicemente il nome di una BAT nel percorso creato (ad esempio "c: \ apps") per eseguire i comandi (ad esempio, digitare "myapps" per eseguire i comandi di sostituzione).

1
Ho provato "start / separate" ma salva solo la variabile di ambiente (non le sostituzioni del comando doskey) ... Il comando "set" è valido anche solo per il prompt aperto, ma possiamo usare "setx" per salvarlo sul sistema o variabili di ambiente dell'utente "per sempre". Non so se esiste un modo per salvare le sostituzioni doskey "per sempre" nel sistema o per ogni avvio di Windows. Preferisco usare i miei modi ...
kokbira,
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.