
나는 다음과 같은 짧은 스크립트를 만들고 싶습니다.
- 지정된 서비스가 실행 중인지 확인합니다.
- 그렇다면 중지해야 합니다(그렇지 않으면 마지막 지점에 대한 변수를 선언합니다).
- 그러면 제가 이미 생성한 코드가 있을 것입니다.
- 이전에 중지된 서비스를 다시 시작해야 합니다(그래서 모든 서비스를 시작하고 싶지는 않습니다).
서비스가 실행되고 있는지 확인하려고 합니다.(서비스 예시 : 비트)
sc query bits | findstr "RUNNING"
// 서비스라면비트실행 중 출력은 다음과 같습니다.
STATE : 4 RUNNING
net stop bits
/ 로 서비스를 중지/시작할 수 있습니다 net start bits
.
하지만 시작해서는 안 되는 서비스 시작을 방지하려면 어떻게 해야 합니까?
(내 말은 그들이 초기에 실행되지 않았다는 뜻입니다).어떻게든 '토큰'을 사용하시겠습니까?
지금까지 내가 만든 것은 다음과 같습니다.
for /f "tokens=2" %s in ('sc query ^| find "SERVICE_NAME" ^| FIND /i "Bits"') do @echo %s` and/or `for /f "tokens=2" %s in ('sc query state^= inactive ^| find "SERVICE_NAME" ^| find /i "Bits"') do @echo %s
값("BITS" 또는 NUL)을 반환할 수 있으므로 나중에 사용할 수 있도록 지금 변수를 할당해야 할 것 같습니다.
답변1
가장 최적의 솔루션은 아니지만 갈 길이 멀다(베타 버전)
기본적으로 C:\Windows\SoftwareDistribution 폴더를 삭제하고 싶었습니다.
BITS/wuauser가 실행 중인지 확인하기 위해 2개의 변수(svc_1, svc_2)를 만들었습니다.
그렇게 하면 중지되었다가 다시 켜집니다...
@echo off
color 8
echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³ ³
echo ³ Czyszczenie dysku C: ³
echo ³ ³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo:
:SERVICE_NAME = DISPLAY_NAME
:BITS = Background Intelligent Transfer Service
:wuauserv = Windows Update
set srv_1=0
set srv_2=0
:set srv_3=0
:ewentualnie usunac folder %systemroot%\system32\catroot2
:state= active
for /f "tokens=2" %%1 in ('sc query ^| find "SERVICE_NAME" ^| find /i "BITS"') do (
echo usluga BITS jest uruchomiona
set srv_1=1
)
:for /f "tokens=2" %%1 in ('sc query state^= inactive ^| find "SERVICE_NAME" ^| find /i "BITS"') do (
:echo usluga BITS nie jest uruchomiona
:)
for /f "tokens=2" %%2 in ('sc query ^| find "SERVICE_NAME" ^| find /i "wuauserv"') do (
echo usluga Windows Update jest uruchomiona
set srv_2=1
)
if %srv_1==1 (
net stop BITS
)
if %srv_2==1 (
net stop wuauserv
)
:parametr f usuwa pliki read-only
:parametr s usuwa pliki i (pod)foldery
:parametr q to cichy tryb
rmdir /s /q C:\Windows\SoftwareDistribution
if %srv_1==1 (
net start BITS
)
if %srv_2==1 (
net start wuauserv
)
mkdir C:\windows\ccmcache2
rmdir /s /q C:\windows\ccmcache
ren C:\windows\ccmcache2 ccmcache
del /f /q "C:\Windows\temp\*.*",
del /f /q "C:\Windows\$RECYCLE.BIN",
del /f /q "C:\Program Files\SplunkUniversalForwarder\var\log\splunk\*.dmp",
timeout /t 10
@echo off
cls
color 7
echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³ ³
echo ³ Czyszczenie dysku C: ³
echo ³ ³ PRESS [any key] TO EXIT
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo:
:WMIC Windows Management Instrumentation Command-line utility
:WMIC LOGICALDISK GET DeviceID, Size, FreeSpace | find /i "C:"
for /f "tokens=1-3" %%a in ('WMIC LOGICALDISK where "Name='C:'" GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%%b" ^& " size=" ^& FormatNumber^(cdbl^(%%c^)/1024/1024/1024, 2^)^& " GB"^& " free=" ^& FormatNumber^(cdbl^(%%a^)/1024/1024/1024, 2^)^& " GB" > %temp%\tmp.vbs & @if not "%%c"=="" @echo( & @cscript //nologo %temp%\tmp.vbs & del %temp%\tmp.vbs
pause >nul