Eliminazione selettiva delle attività pianificate del sistema


10

La finestra di Windows 7 contiene un elenco di attività pianificate -> Attività di Windows predefinite + Alcune attività personalizzate che iniziano tutte con una determinata stringa. Il codice precedente ha eliminato tutte le attività con il comando:

schtasks /Delete /TN * /F

Vogliamo invece conservare le attività predefinite di Windows ed eliminare selettivamente le attività che iniziano con una determinata stringa abctask1, ad esempio abctask2. Come procedere oltre? Grazie!


Hai provato a usare qualcosa del genere schtasks /Delete /TN abctask* /F?
Giona Bishop,

1
Non funziona. Penso che il carattere jolly * non funzioni come previsto.

Se il carattere jolly non funziona correttamente in quel modo, la soluzione migliore potrebbe essere quella di ottenere l'elenco delle attività con l' /queryopzione, scorrere tra loro per trovare quelle che corrispondono al modello desiderato e ucciderle usando i loro nomi completi. Qualcosa come uno script Perl potrebbe essere il migliore per questo tipo di attività.
Giona Bishop,

Risposte:


5

Supponendo che i tuoi compiti siano una parola (ad es. Abctask1, abctask2 - non "abc task 1"), questo dovrebbe funzionare:

for /f %%x in ('schtasks /query ^| findstr abctask') do schtasks /Delete /TN %%x /F

1
Immagino che find, essendo meno di 1/4 della dimensione di findstrreagirebbe più velocemente. Inoltre, entrambi supportano l'uso delle virgolette per racchiudere il termine di ricerca ( findli richiede), ciò consentirà di trovare attività come "abc task 1" che hai citato.
James K,

Grazie Marco, beh in realtà non ha accettato %% x, l'ho cambiato in% x e ha funzionato! :) Saluti! :)

@ user1620230 Supponevo che lo avessi eseguito in un file batch. Le doppie percentuali in %% x sono richieste in un file batch, mentre% x è richiesto nella riga di comando. @JamesK, penso che sarebbe molto difficile trovare una differenza di velocità nel mondo reale findrispetto a findstr, in particolare in qualcosa di così piccolo. :-)

Aha, capito :) Beh sì, alla fine potrebbe essere usato in uno script batch. Grazie per le informazioni :)

schtasks / query tronca i nomi delle attività a 50 caratteri. L'opzione / xml evita il troncamento. for /f "tokens=2" %%x in ('schtasks /query /xml ^| findstr taskname') do
David,

3

Se si desidera utilizzare il carattere jolly (*) nella selezione delle attività da eliminare, provare a utilizzare questo semplice comando batch:

(solo campione)

echo off
del %SystemDrive%\Windows\Tasks\Google*
del %SystemDrive%\Windows\Tasks\Facebook*

2

Sono finito qui mentre cercavo un modo per automatizzare la disabilitazione di alcune attività pianificate di Windows. Non sono riuscito a ottenere nessuno degli esempi attuali per gestire correttamente i nomi delle attività con barre rovesciate e spazi. Ho scoperto che l'uso del formato CSV e il comando find hanno funzionato meglio per me:

for /f "tokens=1 delims=," %%x in ('schtasks /query /fo csv ^| find "\Microsoft\Windows\Application Experience\"') do schtasks /Delete /TN %%x /F

2

Ragazzi, avete aiutato un bel po 'qui. Mentre quanto sopra funziona per i nomi più brevi e 'user3490' ha pubblicato una bella aggiunta alla stringa, tuttavia non sembra funzionare con nomi con spazi. Ho scoperto che usare i caratteri jolly con SCHTASKS funziona con '.' piuttosto che '*' e ha trovato un'interessante modifica alla stringa consentendo opportunità tanto necessarie! Incollerò di seguito alcuni esempi di ciò che ho usato in un file batch:

for /f "tokens=2 delims=\" %%x in ('SCHTASKS /QUERY /FO:LIST ^| FINDSTR "AVGPCTuneUp_Task."') do SCHTASKS /DELETE /F /TN "\%%x"

for /f "tokens=2 delims=\" %%x in ('SCHTASKS /QUERY /FO:LIST ^| FINDSTR "AMD.Updater."') do SCHTASKS /DELETE /F /TN "\%%x"

for /f "tokens=2 delims=\" %%x in ('SCHTASKS /QUERY /FO:LIST ^| FINDSTR "Lenovo.Smile."') do SCHTASKS /DELETE /F /TN "\%%x"

Grazie a tutti per gli eccellenti suggerimenti! Sono consapevole che questo argomento ha più di un anno, ma spero che questo aiuti qualcun altro che potrebbe non essere arrivato così lontano.


1

La risposta di Mark funziona bene fintanto che hai nomi di attività pianificati abbastanza brevi, ma l'output predefinito di schtasks /query(formato tabella) tronca i nomi delle attività a 32 caratteri, il che provoca errori quando si tenta di eliminarli.

Se hai bisogno di occuparti di attività che hanno nomi più lunghi, consiglierei invece di utilizzare il formato di output dell'elenco, che non tronca:

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr abctask') do schtasks /Delete /TN %%x /F

Se le attività che desideri eliminare hanno un prefisso comune, puoi perfezionare ulteriormente la corrispondenza da findstr:

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr ^^abctask') do schtasks /Delete /TN %%x /F
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.