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:
- Testează fiecare script înainte să-l programezi automat.
- Nu copia comenzi de pe internet fără să înțelegi ce fac.
- Nu șterge directoare de sistem.
- Creează un punct de restaurare înainte să folosești scripturi mai complexe.
- 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:
- Deschide meniul Start.
- Caută „PowerShell”.
- Deschide PowerShell.
- Introdu comanda:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
- 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
- Deschide meniul Start
- Caută „Task Scheduler”
- Selectează „Create Basic Task”
- 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:
- Găsește sarcina în Task Scheduler Library.
- Apasă clic dreapta pe ea.
- Selectează „Run”.
- Verifică fișierul jurnal.
- 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ă:
- Decide ce operațiune vrei să automatizezi
- Găsește și testează comanda separat
- Adaugă comanda într-un fișier
.batsau.ps1 - Adaugă mesaje care explică ce se întâmplă
- Adaugă gestionarea erorilor
- Creează un jurnal
- Testează scriptul manual
- 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.
Leave A Comment?