시스템 예약 된 작업을 선택적으로 삭제


10

Windows 7 상자에는 예약 된 작업-> 기본 Windows 작업 + 모두 특정 문자열로 시작하는 특정 사용자 지정 작업 목록이 있습니다. 이전 코드는 다음 명령으로 모든 작업을 삭제했습니다.

schtasks /Delete /TN * /F

대신 우리는 기본 Windows 작업을 유지하고, 선택적으로 특정 문자열 말로 시작하는 작업을 삭제하려면 abctask1, abctask2. 더 진행하는 방법? 감사!


같은 것을 사용해 보셨습니까 schtasks /Delete /TN abctask* /F?
Jonah 주교

1
작동하지 않습니다. 와일드 카드가 예상대로 작동하지 않는다고 생각합니다.

와일드 카드가 이러한 방식으로 제대로 작동하지 않으면 /query옵션을 사용하여 작업 목록을 얻고 원하는 패턴과 일치하는 작업을 찾아서 전체 이름을 사용하여 종료하는 것이 가장 좋습니다. 이런 종류의 작업에는 Perl 스크립트와 같은 것이 가장 좋습니다.
Jonah 주교

답변:


5

작업이 한 단어라고 가정하면 (예 : abctask1, abctask2- "abc task 1"이 아님) 다음과 같이 작동합니다.

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

1
나는 그것을 상상 find이하의 1/4 크기 인, findstr더 빨리 반응 할 것이다. 또한 둘 다 따옴표를 사용하여 검색어를 둘러싸고 지원 find해야하며, 이렇게하면 언급 한 "abc task 1"과 같은 작업을 찾을 수 있습니다.
James K

고마워 마크, 실제로 그것은 %% x를 받아들이지 않았다, 나는 그것을 % x로 바꾸었고 효과가 있었다! :) 건배! :)

@ user1620230 배치 파일에서 이것을 실행한다고 가정했습니다. 배치 파일에는 %% x의 이중 백분율이 필요하지만 명령 줄에는 % x가 필요합니다. @JamesK, 난 당신이 열심히 어떤 실제 속도 차이 찾을 누를 거라고 생각 find대를 findstr특히이 작은 뭔가. :-)

Aha, 당신은 :) 글쎄, 궁극적으로 그것은 배치 스크립트에서 사용될 수 있습니다. 정보 주셔서 감사합니다 :)

schtasks / query는 작업 이름을 50 자로 자릅니다. / xml 옵션은 잘림을 방지합니다. for /f "tokens=2" %%x in ('schtasks /query /xml ^| findstr taskname') do
David

3

선택한 작업에서 와일드 카드 (*)를 사용하여 삭제하려면 다음 간단한 배치 명령을 사용해보십시오.

(샘플 만)

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

2

일부 Windows 예약 작업을 자동으로 비활성화하는 방법을 찾는 동안 여기에 왔습니다. 백 슬래시와 공백이있는 작업 이름을 올바르게 처리하기 위해 현재 예제를 얻을 수 없습니다. csv 형식과 find 명령을 사용하면 가장 효과적이라는 것을 알았습니다.

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

2

너희들은 여기에 약간 도움이되었습니다. 위의 이름은 짧은 이름에서 작동하고 'user3490'은 문자열에 아주 잘 추가되었지만 여전히 공백이있는 이름에서는 작동하지 않는 것 같습니다. SCHTASKS와 함께 와일드 카드를 사용하여 '.'을 사용하는 것으로 나타났습니다. '*'가 아니라 문자열에 대한 흥미로운 수정을 발견하여 많은 기회를 허용했습니다! 배치 파일에서 사용한 것의 예를 아래에 붙여 넣습니다.

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"

훌륭한 포인터를 위해 여기에 모두 감사합니다! 나는이 주제가 1 년이 지났다는 것을 알고 있지만, 이것이 지금까지 얻지 못한 다른 누군가에게 도움이되기를 바랍니다.


1

Mark의 답변은 예약 된 작업 이름이 상당히 짧은 한 제대로 작동하지만 schtasks /query(테이블 형식) 의 기본 출력은 작업 이름을 32 자로 자르므로 삭제하려고 할 때 오류가 발생합니다.

더 긴 이름을 가진 작업을 처리 해야하는 경우 대신 잘리지 않는 목록 출력 형식을 사용하는 것이 좋습니다.

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

삭제하려는 작업에 공통 접두사가 있으면 findstr에서 일치 항목을 추가로 구체화 할 수 있습니다.

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr ^^abctask') do schtasks /Delete /TN %%x /F
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.