Windows: come aggiungere un'azione di script batch al menu di scelta rapida


18

Ho alcuni programmi che creano file temporanei o file di backup o file simili che non sono importanti. Ad esempio, per impostazione predefinita GVim per Windows crea un file di backup in filename.txt~.

A volte ho bisogno di ripulire una directory e rimuovere tutti questi file. Per questo ho creato un semplice file .bat. Tuttavia, è ingombrante dover avviare CMD, navigare nella cartella, eseguire lo script. Soprattutto perché questo è uno script che vorrei eseguire spesso su varie cartelle. E non voglio copiare lo script in più cartelle, poiché sarebbe un incubo per la manutenzione.

Quindi, stavo pensando, che la soluzione migliore sarebbe quella di aggiungere una voce di menu del tasto destro che mi permette di eseguire lo script. In questo modo posso fare clic con il pulsante destro del mouse su una cartella in Explorer, fare clic su Pulizia e quindi eseguire lo script su questa cartella.

Quindi la mia domanda è: come posso aggiungere un'azione del menu di scelta rapida che esegue uno script batch personalizzato?

Risposte:


18

Ho provato su Windows XP SP3 con questo tasto .reg. Non hai Windows 7 al momento per testarlo correttamente, ma dovrebbe essere quasi lo stesso.

  1. Apri il blocco note e incolla il codice dal basso.
  2. Modifica secondo le tue necessità.
  3. Salva come MyScript1.reg
  4. Fare doppio clic per importare nel registro.
  5. Prova facendo clic destro su qualsiasi directory in Explorer
Editor del registro di Windows Versione 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1]
@ = "Esegui MyScript1"

[Comando HKEY_CLASSES_ROOT \ Directory \ shell \ MyScript1 \]
@ = "\" C: \\ MyScriptsDirectory \\ MyScript1Directory \\ MyScript1.bat \ "\"% 1 \ ""

4
Ho modificato un po 'la tua risposta. "Windows Registry Editor Versione 5.00" è obbligatorio "header" per i file .reg. Altrimenti Windows rifiuterà di iniettare il contenuto nel registro.
extremko

+1 per indicarlo. Me ne sono completamente dimenticato quando c / p codice.
Robert Schmidt,

1
Ci ho provato Ora posso fare clic con il pulsante destro del mouse direttamente su una cartella, ma non funziona se faccio clic con il pulsante destro del mouse all'interno di una cartella. Che è in realtà quello che voglio. Come farlo?
ervingsb,

1
Questa è una domanda diversa dalla "In modo che io possa fare clic destro su una cartella in Explorer e fare clic su Pulizia e quindi eseguire il mio script su questa cartella."
Robert Schmidt,

Sì, è per questo che l'ho chiarito. Scusa per essere impreciso. In realtà lo penso come un clic destro sulla cartella. Non è solo l'icona della cartella, ma all'interno della cartella.
ervingsb,

18

In realtà, la risposta attuale non è scaduta. Ho provato esattamente la stessa cosa su Windows 10 e sono stato in grado di aggiungere Run Batch scriptal menu di scelta rapida di tutte le cartelle in Windows.

Questo è il contenuto del mio script batch (non funzionerà con i percorsi UNC ):

@ECHO OFF
ECHO% ~ n0 è stato chiamato con i seguenti argomenti:
SET args =% *
SE NON DEFINITO args GOTO END
ECO %*
:FINE
PAUSA

Le modifiche al registro che ho apportato possono essere replicate con questo file REG:

Editor del registro di Windows Versione 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run script batch]
@ = "& Esegui script batch"

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script \ command]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

Questo aggiunge solo una voce di menu contestuale per tutte le directory / cartelle in Windows. Se invece vuoi che venga mostrato per ogni singolo file, puoi usare questo:

Editor del registro di Windows Versione 5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Run script]
@ = "Esegui e script"

[HKEY_CLASSES_ROOT \ * \ shell \ Run script \ command]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

In alternativa, puoi aggiungere lo script batch Send Toall'elenco degli articoli creando un collegamento allo script batch e posizionandolo sotto %APPDATA%\Microsoft\Windows\SendTo(o immettendolo shell:sendtonella barra degli indirizzi)

Se si desidera che lo script venga visualizzato nel menu di scelta rapida visualizzato quando si fa clic con il pulsante destro del mouse sullo spazio vuoto all'interno di una directory (sfondo della directory?) È possibile utilizzare il seguente file REG:

Editor del registro di Windows Versione 5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run script batch]
@ = "& Esegui script batch"
"Icon" = "% SystemRoot% \\ System32 \\ shell32.dll, 71"

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch script \ command]
@ = "H: \\ BATCH_FILE_PATH \\ context-batch.bat \"% V \ ""

Non hai bisogno della "Icon"="%SystemRoot%\\System32\\shell32.dll,71"linea. Aggiunge semplicemente un'icona al menu di scelta rapida simile a questa:

finestre dell'icona del menu di scelta rapida


Grazie! A proposito, sai come mostrare questo menu contestuale quando faccio clic con il pulsante destro del mouse sullo spazio vuoto della cartella corrente (non solo quando faccio clic sulla cartella stessa)?
Tom Brito,

@TomBrito Vedi la mia ultima modifica.
Vinayak,

@ Tom Brito: Modifica menu contestuale spazio vuoto sembra essere risolta qui: stackoverflow.com/questions/4902041/...
kreemoweet

@kreemoweet Grazie per averlo collegato! Tuttavia, l'ho scoperto analizzando l' editor del menu di scelta rapida .
Vinayak,

@kreemoweet Ho cambiato la stringa del percorso per Directory\Backgroundincluderla %Vpoiché passerebbe la directory corrente allo script. Tuttavia, non sono davvero sicuro di cosa significhi. %Wsembra funzionare altrettanto bene.
Vinayak,

6

Consiglierei l' Editor di programmi predefinito per questa attività. È sia più facile da usare che probabilmente più sicuro della modifica diretta del registro.

Scegli il menu contestuale inserisci qui la descrizione dell'immagine

Seleziona l'estensione che desideri modificare. inserisci qui la descrizione dell'immagine

Scegli Aggiungi ... inserisci qui la descrizione dell'immagine

Dai un titolo al tuo comando, cerca il file batch e opzionalmente scegli un'icona per rappresentare il tuo comando. inserisci qui la descrizione dell'immagine

Salva il menu di scelta rapida nel registro e sei a posto.


Vorrei eseguire il batch su cartelle, non un tipo di file. Sembra che non aiuta ...
Tom Brito,

Questo mi ha aiutato, grazie per averlo condiviso.
Daniel Kaplan,

Bel programma. Grazie.
Laurie Stearn,

0

Una soluzione alternativa che uso su Windows 10 è l'aggiunta di script a una delle cartelle nella variabile path e quindi quando sei in explorer usa la sequenza:

  • ctrl + L - per iniziare a scrivere nella barra di ricerca

  • digitare: cmd, quindi premere Invio - per avviare cmd nella directory corrente

  • esegui il tuo script, digitandone il nome


0

@Vinayak,

Se si utilizza l'opzione "invia a", probabilmente sarà necessario aggiungere la riga cd /d %1all'inizio del comando batch in modo che venga eseguita nel percorso di destinazione.

il mio file batch corrente è simile al seguente:

@echo off
cd /d %1    
del *.txt
pause

Grazie per l'aiuto, mi è capitato di imbattermi in questo tramite Google al momento giusto :)


Questo è davvero un commento e non una risposta alla domanda originale. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post: puoi sempre commentare i tuoi post e una volta che avrai una reputazione sufficiente sarai in grado di commentare qualsiasi post . Si prega di leggere Perché ho bisogno di 50 reputazione per commentare? Cosa posso fare invece?
DavidPostill

@DavidPostill bene, non aveva un suo post in questo thread su cui commentare, prima di pubblicare la sua risposta .. E (supponendo che volesse dire qualcosa degno di essere un commento), cosa poteva fare per commentare? niente presumibilmente.
barlop

Le risposte di @barlop non sostituiscono i commenti, come ben sapete. Un'alternativa è proporre una modifica all'altra risposta ... ma probabilmente verrebbe respinta.
DavidPostill

@DavidPostill il mio punto è semplicemente che allora non ha alcuna opzione. e non sei molto chiaro su questo fatto nel tuo commento originale. In effetti il ​​tuo commento originale è indicativo dell'idea che ha alcune opzioni, ma non è così.
barlop,

@barlop Ah. OK. Ci penserò su alcune parole migliori ...
DavidPostill
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.