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

<br />
#Requires -Version 1.0<br />
#Requires -RunAsAdministrator<br />
<#
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 >);<br />
    • Connessione ad internet in caso non sia già presente il file *.zip contenente SuperDelete oppure il file SuperDelete.exe<br />
#></p>
<p>write-host "`n"</p>
<p><# Verifico la presenza del file SuperDelete_1.2.0_x86-x64_NET40.zip #><br />
$path = ".\SuperDelete_1.2.0_x86-x64_NET40.zip"<br />
$Test = Test-Path $path<br />
If ($Test -eq $True) {Write-Host "File zip gia' scaricato!"}</p>
<p><# Se il file SuperDelete_1.2.0_x86-x64_NET40.zip non e' presente, lo scarico #></p>
<p>Else {<br />
    $url = "http://www.robertobonfa.it/Script/SuperDelete_1.2.0_x86-x64_NET40.zip"<br />
    $output = "$PSScriptRoot\SuperDelete_1.2.0_x86-x64_NET40.zip"<br />
    $start_time = Get-Date</p>
<p>    $wc = New-Object System.Net.WebClient<br />
    $wc.DownloadFile($url, $output)<br />
    #OR<br />
    (New-Object System.Net.WebClient).DownloadFile($url, $output)</p>
<p>    Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"  </p>
<p>}</p>
<p>write-host "`n"</p>
<p><# Verifico la presenza del file SuperDelete.exe #><br />
$path = ".\SuperDelete.exe"<br />
$Test = Test-Path $path<br />
If ($Test -eq $True) {Write-Host "Superdelete.exe gia' scaricato e decompresso"}</p>
<p><# Se il file SuperDelete.exe non e' presente, lo decomprimo #></p>
<p>Else {<br />
Add-Type -AssemblyName System.IO.Compression.FileSystem<br />
function Unzip<br />
{<br />
    param([string]$zipfile, [string]$outpath)</p>
<p>    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)<br />
}</p>
<p>Unzip ".\SuperDelete_1.2.0_x86-x64_NET40.zip" "$PSScriptRoot\"</p>
<p>}</p>
<p>write-host "`n"</p>
<p><# Costruisco la GUI per la richiesta del percorso del file o cartella da eliminare #></p>
<p>[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')<br />
$Path = [Microsoft.VisualBasic.Interaction]::InputBox('Inserisci il path completo del file/cartella da eliminare', 'PATH') </p>
<p>$Path</p>
<p>& cmd.exe /C ".\SuperDelete.exe" -s $Path<br />

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!

Roberto Administrator
Info su di me
Informatico di professione. Nerd per passione. Totalmente malato per la tecnologia. Sono una persona socievole, gentile ed educato. Sono mattiniero, ma anche notturno. Amo la compagnia delle persone che mi piacciono e so dare molto più di ciò che mi si chiede. Preferisco fare shopping piuttosto che passare una giornata in piscina. Odio volare, ho il terrore di volare! Sono esageratamente testardo, quando penso ne valga la pena. So ciò che voglio e lotto sempre, finché posso, per ottenerlo. Sono molto pretenzioso. È molto facile deludermi e quasi impossibile sorprendermi. Sono impulsivo, stronzo, ma sempre leale e sincero. I filtri dell’imbarazzo, della delicatezza, della vergogna a me non li hanno applicati. Sono molto vendicativo e rancoroso, ma – soprattutto – molto difficilmente dimentico un torto e raramente perdono chi me lo ha fatto. Odio, in assoluto, le falsità, le menzogne ed essere preso per il culo. QUI, se volete, potete leggere qualcosa di più su di me; la versione completa.
×
Roberto Administrator
Informatico di professione. Nerd per passione. Totalmente malato per la tecnologia. Sono una persona socievole, gentile ed educato. Sono mattiniero, ma anche notturno. Amo la compagnia delle persone che mi piacciono e so dare molto più di ciò che mi si chiede. Preferisco fare shopping piuttosto che passare una giornata in piscina. Odio volare, ho il terrore di volare! Sono esageratamente testardo, quando penso ne valga la pena. So ciò che voglio e lotto sempre, finché posso, per ottenerlo. Sono molto pretenzioso. È molto facile deludermi e quasi impossibile sorprendermi. Sono impulsivo, stronzo, ma sempre leale e sincero. I filtri dell’imbarazzo, della delicatezza, della vergogna a me non li hanno applicati. Sono molto vendicativo e rancoroso, ma – soprattutto – molto difficilmente dimentico un torto e raramente perdono chi me lo ha fatto. Odio, in assoluto, le falsità, le menzogne ed essere preso per il culo. QUI, se volete, potete leggere qualcosa di più su di me; la versione completa.
Like
Like Love Haha Wow Sad Angry

CONDIVIDI QUESTO ARTICOLO