Cum creezi propriile scripturi Windows pentru întreținere automată

Configurare noua (How To)

Situatie

Întreținerea periodică a calculatorului poate deveni rapid o activitate repetitivă: ștergerea fișierelor temporare, golirea coșului de reciclare, verificarea spațiului liber sau pornirea anumitor comenzi de sistem. Vestea bună este că multe dintre aceste operațiuni pot fi automatizate cu ajutorul unor scripturi simple. Nu trebuie să fii programator și nici să instalezi aplicații complicate. Windows include deja instrumentele necesare.

Solutie

Un script este un fișier text care conține o serie de comenzi. Atunci când deschizi fișierul, Windows execută comenzile una după alta.

Pentru început, vom folosi două tipuri de scripturi:

  • fișiere Batch, cu extensia .bat;
  • scripturi PowerShell, cu extensia .ps1.

Fișierele Batch sunt mai simple și sunt potrivite pentru primele experimente. PowerShell este mai modern și oferă mai mult control. Unele comenzi pot șterge fișiere sau pot modifica setări ale sistemului. Din acest motiv, este recomandat să respecți câteva reguli simple:

  1. Testează fiecare script înainte să-l programezi automat.
  2. Nu copia comenzi de pe internet fără să înțelegi ce fac.
  3. Nu șterge directoare de sistem.
  4. Creează un punct de restaurare înainte să folosești scripturi mai complexe.
  5. Păstrează o copie de siguranță a fișierelor importante.

În exemplele din acest articol vom folosi doar operațiuni de întreținere uzuale.

Pasul 1: creează primul tău script Batch

Deschide aplicația Notepad și introdu următorul cod:

@echo off
title Intretinere automata Windows

echo Pornire intretinere...
echo.

echo Stergere fisiere temporare ale utilizatorului...
del /q /f /s "%TEMP%\*" >nul 2>&1

echo Golire cos de reciclare...
PowerShell.exe -NoProfile -Command "Clear-RecycleBin -Force" >nul 2>&1

echo Verificare spatiu liber...
wmic logicaldisk get caption,freespace,size

echo.
echo Intretinerea s-a terminat.
pause

Salvează fișierul astfel:

intretinere-windows.bat

În fereastra de salvare, la „Save as type”, selectează „All Files”, pentru ca Notepad să nu adauge automat extensia .txt.

Să analizăm scriptul pe rând.

Ascunderea comenzilor afișate

@echo off

Această linie împiedică afișarea fiecărei comenzi în fereastră. Vei vedea doar mesajele importante.

Schimbarea titlului ferestrei

title Intretinere automata Windows

Această comandă modifică titlul ferestrei Command Prompt.

Afișarea mesajelor

echo Pornire intretinere...

Comanda echo afișează un mesaj pe ecran. Este utilă pentru a ști în ce etapă se află scriptul.

Ștergerea fișierelor temporare

del /q /f /s "%TEMP%\*" >nul 2>&1

Comanda încearcă să șteargă fișierele din directorul temporar al utilizatorului.

Parametrii folosiți sunt:

  • /q — nu solicită confirmare;
  • /f — forțează ștergerea fișierelor protejate doar la citire;
  • /s — include subdirectoarele;
  • >nul 2>&1 — ascunde mesajele de eroare și rezultatele detaliate.

Unele fișiere nu vor putea fi șterse deoarece sunt folosite de aplicații. Acest lucru este normal.

Golirea coșului de reciclare

PowerShell.exe -NoProfile -Command "Clear-RecycleBin -Force"

Această linie pornește PowerShell și golește coșul de reciclare fără confirmare.

Ai grijă: după golire, fișierele nu mai pot fi restaurate ușor din Recycle Bin.

Verificarea spațiului liber

wmic logicaldisk get caption,freespace,size

Comanda afișează unitățile de stocare, spațiul liber și capacitatea totală. Pe unele versiuni noi de Windows, instrumentul wmic poate să nu mai fie disponibil. În acest caz, poți folosi PowerShell:

PowerShell.exe -NoProfile -Command "Get-PSDrive -PSProvider FileSystem"

Pasul 2: testează scriptul

Înainte să automatizezi rularea, deschide fișierul prin dublu clic.

Urmărește mesajele afișate și verifică dacă:

  • scriptul pornește fără erori importante;
  • fișierele temporare sunt eliminate;
  • coșul de reciclare este golit;
  • informațiile despre discuri sunt afișate.

Dacă fereastra se închide prea repede, comanda pause de la final o va menține deschisă până când apeși o tastă.

Pasul 3: creează un jurnal al operațiunilor

Un script automat este mai util atunci când salvează rezultatele într-un fișier jurnal.

Poți modifica scriptul astfel:

@echo off
title Intretinere automata Windows

set LOG=%USERPROFILE%\Desktop\jurnal-intretinere.txt

echo ============================== >> "%LOG%"
echo Intretinere pornita la %date% %time% >> "%LOG%"

echo Stergere fisiere temporare... >> "%LOG%"
del /q /f /s "%TEMP%\*" >> "%LOG%" 2>&1

echo Golire cos de reciclare... >> "%LOG%"
PowerShell.exe -NoProfile -Command "Clear-RecycleBin -Force" >> "%LOG%" 2>&1

echo Verificare spatiu liber... >> "%LOG%"
PowerShell.exe -NoProfile -Command "Get-PSDrive -PSProvider FileSystem" >> "%LOG%" 2>&1

echo Intretinere terminata la %date% %time% >> "%LOG%"
echo. >> "%LOG%"

echo Operatiunea s-a terminat.
echo Jurnalul se afla pe Desktop.
pause

Acest script creează pe Desktop un fișier numit:

jurnal-intretinere.txt

La fiecare rulare, informațiile noi sunt adăugate la finalul fișierului.

Pasul 4: creează un script PowerShell

PowerShell este mai flexibil decât Batch și este recomandat pentru scripturi mai avansate.

Deschide Notepad și introdu:

$LogFile = "$env:USERPROFILE\Desktop\jurnal-intretinere-powershell.txt"

Add-Content $LogFile "=============================="
Add-Content $LogFile "Intretinere pornita la $(Get-Date)"

Write-Host "Stergere fisiere temporare..."

Get-ChildItem -Path $env:TEMP -Force -ErrorAction SilentlyContinue |
    Remove-Item -Force -Recurse -ErrorAction SilentlyContinue

Add-Content $LogFile "Fisierele temporare au fost procesate."

Write-Host "Golire cos de reciclare..."

Clear-RecycleBin -Force -ErrorAction SilentlyContinue

Add-Content $LogFile "Cosul de reciclare a fost golit."

Write-Host "Verificare spatiu liber..."

$Disks = Get-PSDrive -PSProvider FileSystem |
    Select-Object Name,
        @{Name="SpatiuLiberGB"; Expression={[math]::Round($_.Free / 1GB, 2)}},
        @{Name="SpatiuFolositGB"; Expression={[math]::Round($_.Used / 1GB, 2)}}

$Disks | Format-Table
$Disks | Out-String | Add-Content $LogFile

Add-Content $LogFile "Intretinere terminata la $(Get-Date)"
Add-Content $LogFile ""

Write-Host "Intretinerea s-a terminat."

Salvează fișierul cu numele:

intretinere-windows.ps1

Windows poate bloca implicit rularea scripturilor PowerShell.

Pentru a permite scripturile create local:

  1. Deschide meniul Start.
  2. Caută „PowerShell”.
  3. Deschide PowerShell.
  4. Introdu comanda:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
  1. Confirmă modificarea.

Această setare permite rularea scripturilor locale, dar păstrează anumite restricții pentru scripturile descărcate de pe internet.

Pentru a rula scriptul, deschide PowerShell în directorul în care este salvat și folosește:

.\intretinere-windows.ps1

Pasul 5: programează rularea automată

Windows include aplicația Task Scheduler, prin care poți rula scriptul zilnic, săptămânal sau la pornirea calculatorului.

Deschiderea Task Scheduler

  1. Deschide meniul Start
  2. Caută „Task Scheduler”
  3. Selectează „Create Basic Task”
  4. Introdu un nume, de exemplu:
Intretinere automata Windows

Poți selecta:

  • Daily, pentru rulare zilnică;
  • Weekly, pentru rulare săptămânală;
  • When the computer starts, pentru rulare la pornirea sistemului;
  • When I log on, pentru rulare la autentificare.

Pentru un calculator personal, rularea săptămânală este de obicei suficientă.

Programarea fișierului Batch

La secțiunea „Action”, selectează „Start a program”

În câmpul „Program/script”, indică locația fișierului:

C:\Scripts\intretinere-windows.bat

Este recomandat să creezi un director dedicat, de exemplu:

C:\Scripts

Programarea scriptului PowerShell

Pentru un script PowerShell, în câmpul „Program/script” introdu:

powershell.exe

În câmpul „Add arguments” introdu:

-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\intretinere-windows.ps1"

Finalizează configurarea și salvează sarcina.

După creare:

  1. Găsește sarcina în Task Scheduler Library.
  2. Apasă clic dreapta pe ea.
  3. Selectează „Run”.
  4. Verifică fișierul jurnal.
  5. Verifică secțiunea „Last Run Result”.

Dacă valoarea afișată este 0x0, sarcina s-a executat cu succes.

După ce ai înțeles exemplele de bază, poți adăuga și alte comenzi.

Pornirea curățării de disc

cleanmgr

Această comandă deschide instrumentul Windows Disk Cleanup.

Pentru o configurare mai avansată poți folosi:

cleanmgr /sageset:1

Apoi, pentru rulare:

cleanmgr /sagerun:1

Verificarea fișierelor de sistem

sfc /scannow

Această comandă verifică integritatea fișierelor Windows. Trebuie rulată cu drepturi de administrator și poate dura destul de mult. Nu este recomandat să o rulezi zilnic. O poți folosi manual atunci când suspectezi probleme de sistem.

Verificarea imaginii Windows

DISM /Online /Cleanup-Image /ScanHealth

Pentru reparare:

DISM /Online /Cleanup-Image /RestoreHealth

Și aceste comenzi necesită drepturi de administrator.

Crearea automată a unui director de backup

if not exist "%USERPROFILE%\Backup" mkdir "%USERPROFILE%\Backup"

Această comandă creează directorul Backup doar dacă nu există deja.

Copierea documentelor într-un director de backup

robocopy "%USERPROFILE%\Documents" "%USERPROFILE%\Backup\Documents" /E /R:2 /W:2

Parametrii înseamnă:

  • /E — copiază toate subdirectoarele;
  • /R:2 — încearcă din nou de cel mult două ori;
  • /W:2 — așteaptă două secunde între încercări.

Pentru backupuri importante, folosește o unitate externă sau un serviciu cloud, nu doar un alt director de pe același disc.

Exemplu complet de script PowerShell

Următorul script combină mai multe operațiuni și generează un jurnal clar:

$LogDirectory = "$env:USERPROFILE\Documents\JurnaleIntretinere"
$LogFile = "$LogDirectory\intretinere-$(Get-Date -Format 'yyyy-MM-dd').txt"

if (-not (Test-Path $LogDirectory)) {
    New-Item -ItemType Directory -Path $LogDirectory | Out-Null
}

function Write-Log {
    param(
        [string]$Message
    )

    $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    Add-Content -Path $LogFile -Value "[$Timestamp] $Message"
}

Write-Log "Pornire proces de intretinere."

Write-Host "Stergere fisiere temporare..."

Get-ChildItem -Path $env:TEMP -Force -ErrorAction SilentlyContinue |
    Remove-Item -Force -Recurse -ErrorAction SilentlyContinue

Write-Log "Curatarea directorului temporar s-a incheiat."

Write-Host "Golire cos de reciclare..."

Clear-RecycleBin -Force -ErrorAction SilentlyContinue

Write-Log "Cosul de reciclare a fost procesat."

Write-Host "Colectare informatii despre discuri..."

$DiskInfo = Get-PSDrive -PSProvider FileSystem |
    Select-Object Name,
        @{Name="FreeGB"; Expression={[math]::Round($_.Free / 1GB, 2)}},
        @{Name="UsedGB"; Expression={[math]::Round($_.Used / 1GB, 2)}}

$DiskInfo | Format-Table
$DiskInfo | Out-String | Add-Content $LogFile

Write-Log "Procesul de intretinere s-a incheiat."
Write-Host "Gata. Jurnalul a fost salvat in $LogFile"

Atunci când creezi un script nou, urmează această structură:

  1. Decide ce operațiune vrei să automatizezi
  2. Găsește și testează comanda separat
  3. Adaugă comanda într-un fișier .bat sau .ps1
  4. Adaugă mesaje care explică ce se întâmplă
  5. Adaugă gestionarea erorilor
  6. Creează un jurnal
  7. Testează scriptul manual
  8. Programează rularea în Task Scheduler.

Nu începe cu un script foarte lung. Construiește-l treptat și verifică fiecare comandă înainte de a adăuga următoarea etapă.

Nu toate scripturile au nevoie de drepturi de administrator. Folosește aceste drepturi doar atunci când o comandă le cere.

Ștergerea unor directoare prea generale

Evită comenzi precum:

del /s /q C:\*

O astfel de comandă poate produce pierderi grave de date.

Lipsa ghilimelelor

Căile care conțin spații trebuie scrise între ghilimele:

"C:\Program Files\Aplicatie"

Automatizarea înainte de testare

Rulează manual scriptul de mai multe ori înainte să-l adaugi în Task Scheduler.

Lipsa unui jurnal

Fără un jurnal, este greu să afli dacă scriptul a rulat corect sau unde a apărut o eroare.

Tip solutie

Permanent

Voteaza

(6 din 10 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?