Powershell

Eliminare file o cartelle bloccati da Windows. Come fare?

In Powershell Script by Roberto0 Comments

Like
Like Love Haha Wow Sad Angry

Eliminare file o cartelle bloccati da Windows oppure file o cartelle con un percorso troppo lungo. Come fare?

Eliminare file o cartelle bloccati da Windows . Come fare? Bella domanda! La risposta più semplice sarebbe quella di addentrarsi nei meandri di internet e cercare uno dei tanti software che promettono l’eliminazione di file bloccati da Windows oppure quei file per cui Windows segnala l’errore

Cannot delete [file name]: The file name you specified is not valid or too long.
Specify a different file name

Eliminare file o cartelle bloccati da Windows, a volte, può essere veramente snervante! Io sono un po’ eccessivo e decido di utilizzare il fantastico SuperDelete per compiere queste operazion, ma non basta… per automatizzare totalmente le operazioni (download di SuperDelete, decompressione della cartella esecuzione del comando) ho – ovviamente – creato il mio bel powershell che fa tutto in autonomia, chiedendomi solamente il percorso del file o cartella da eliminare!

Quattro requisiti fondamentali:

• Powershell installato sulla macchina su cui si esegue lo script;
• .net Framework 4.0 installato;
• Connessione ad internet nel caso in cui né il file archivio di SuperDelete (SuperDelete___.zip) né SuperDelete.exe siano presenti nella stessa cartella dello script.
• Impostare – in Powershell – Set-ExecutionPolicy Unrestricted -Force

Veniamo al dunque…

Avviando lo script (avviate Powershell come amministratore per bypassare le executionpolicy) ecco cosa avviene:

Eliminare file o cartelle bloccati da Windows

Ora lanciamo lo script…

Eliminare file o cartelle bloccati da Windows

Eliminare file o cartelle bloccati da Windows

Il download ha avuto esito positivo in pochi millesimi di secondo (è un pacchetto da pochi KB)

Eliminare file o cartelle bloccati da Windows

Tutto ha funzionato, quindi… inseriti il percorso della cartella o file da eliminare

Eliminare file o cartelle bloccati da Windows

In caso abbiate già scaricato l’archivio ZIP e il file SuperDelete.exe sia già stato estratto…

Eliminare file o cartelle bloccati da Windows

Nel caso in cui lo ZIP sia presente, ma non fosse ancora stata fatta l’estrazione


#Requires -Version 1.0
#Requires -RunAsAdministrator
<#
SuperDelete File
Roberto Bonfa'
Versione: 1.7
Vers. 1.7 - Modificato il metodo di download
Vers. 1.6 - Sostituito Github con robertobonfa.it
Vers. 1.5 - Aggiunta GUI per la specifica del path del file da cancellare
Vers. 1.4 - Ignorata la decompressione dell'archivio *.zip qualora il file SuperDelete.exe sia gia' presente nella cartella dove risiede lo script
Vers. 1.3 - Trascurato il download in caso il file SuperDelete.zip sia presente nella cartella dove risiede lo script
Vers. 1.2 - Estrazione del file SuperDelete.exe dallo zip
Vers. 1.1 - Download del pacchetto SuperDelete.zip dal sito di github
Vers. 1.0 - Creazione script
Script creato per la cancellazione di file "bloccati" da Windows oppure per la cancellazione di quelle cartelle/files per cui Windows da errore di percorso troppo lungo

Requisiti fondamentali:
    • Powershell installato e funzionante sulla macchina su cui si esegue lo script (versione 1 o >);
    • Connessione ad internet in caso non sia già presente il file *.zip contenente SuperDelete oppure il file SuperDelete.exe
#>

write-host "`n"

<# Verifico la presenza del file SuperDelete_1.2.0_x86-x64_NET40.zip #>
$path = ".\SuperDelete_1.2.0_x86-x64_NET40.zip"
$Test = Test-Path $path 
If ($Test -eq $True) {Write-Host "File zip gia' scaricato!"}

<# Se il file SuperDelete_1.2.0_x86-x64_NET40.zip non e' presente, lo scarico #>

Else {
    $url = "http://www.robertobonfa.it/Script/SuperDelete_1.2.0_x86-x64_NET40.zip"
    $output = "$PSScriptRoot\SuperDelete_1.2.0_x86-x64_NET40.zip"
    $start_time = Get-Date
    
    $wc = New-Object System.Net.WebClient
    $wc.DownloadFile($url, $output)
    #OR
    (New-Object System.Net.WebClient).DownloadFile($url, $output)
    
    Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"  

}

write-host "`n"

<# Verifico la presenza del file SuperDelete.exe #>
$path = ".\SuperDelete.exe"
$Test = Test-Path $path 
If ($Test -eq $True) {Write-Host "Superdelete.exe gia' scaricato e decompresso"}

<# Se il file SuperDelete.exe non e' presente, lo decomprimo #>

Else {
Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
    param([string]$zipfile, [string]$outpath)

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}

Unzip ".\SuperDelete_1.2.0_x86-x64_NET40.zip" "$PSScriptRoot\"

}

write-host "`n"

<# Costruisco la GUI per la richiesta del percorso del file o cartella da eliminare #>

[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') 
$Path = [Microsoft.VisualBasic.Interaction]::InputBox('Inserisci il path completo del file/cartella da eliminare', 'PATH') 

$Path

& cmd.exe /C ".\SuperDelete.exe" -s $Path

Abbiamo terminato con lo script… Ora dovete solo metterlo su un PC. Buon test!

P.S.: Se volete scaricare direttamente lo script, potete prelevarlo direttamente qui sotto (tasto destro + “salva link con nome”)

Scarica “SuperDelete.ps1”

Qualora abbiate la volontà/voglia di scaricare SuperDelete direttamente dalla pagina di Github, ecco a voi il link!

Like
Like Love Haha Wow Sad Angry

CONDIVIDI QUESTO ARTICOLO


Comment Policy:

I commenti che vengono espressi su questo sito, rispecchiano il pensiero di coloro i quali li esprimono. Siate, pertanto, educati e cortesi nei confronti di chiunque. Utilizzate solo il vostro vero nome e i vostri profili social per collegarvi. Utilizzare profili falsi porterà alla cancellazione del commento, al blocco dello username, al ban dell'IP dal sito e ad una eventuale segnalazione dell'IP stesso alle autorità competenti. Sul sito non sono permessi commenti anonimi, pertanto è necessario che vi autentichiate con uno dei servizi che potete trovare qui sotto. Sono ammessi l'utilizzo di immagini e link nei commenti, ma con moderazione e sempre nel rispetto altrui.