Recently, I got a requirement to delete a file if exists in PowerShell. In this PowerShell tutorial, we will explore how to check if a file exists and delete it using PowerShell.
To delete a file if it exists in PowerShell, use the Test-Path cmdlet to check for the file’s presence and the Remove-Item cmdlet to perform the deletion. Here’s a simple script example:
$filePath = "C:\path\to\your\file.txt"
if (Test-Path $filePath) { Remove-Item $filePath }This script will remove the specified file only if it exists, preventing errors from attempting to delete non-existent files.
Check If a File Exists in PowerShell
Before attempting to delete a file in PowerShell, it’s good to verify that it exists to avoid errors. PowerShell provides the Test-Path cmdlet to check if a file exists in PowerShell.
Here is a complete PowerShell script.
$filePath = "C:\Bijay\file.txt"
if (Test-Path $filePath) {
Write-Host "File exists."
} else {
Write-Host "File does not exist."
}Delete a File if Exists with Remove-Item in PowerShell
You can delete the file using the cmdlet in PowerShell if it exists. This cmdlet is versatile and can be used to delete various types of items, not just files.
Here is the complete PowerShell script, to delete a file if exists in PowerShell using the Remove-Item cmdlet.
$filePath = "C:\Bijay\file.txt"
if (Test-Path $filePath) {
Remove-Item $filePath -Force
Write-Host "File deleted."
} else {
Write-Host "File does not exist."
}The -Force parameter is optional and can be used to delete read-only files in PowerShell.
You can see the output after I executed the PowerShell script using VS code.

Verbose and Error Handling
To get more detailed information about what the script is doing, you can use the -Verbose parameter. Additionally, you might want to handle potential errors, such as lack of permissions to delete the file through your PowerShell script.
try {
if (Test-Path $filePath) {
Remove-Item $filePath -Force -Verbose
Write-Host "File deleted."
} else {
Write-Host "File does not exist."
}
} catch {
Write-Error "An error occurred: $_"
}Delete Multiple Files and Using Wildcards in PowerShell
Sometimes, you may want to delete multiple files or use wildcards to specify a pattern in PowerShell.
$folderPath = "C:\path\to\your\directory"
$pattern = "*.log"
Get-ChildItem -Path $folderPath -Filter $pattern | ForEach-Object {
if (Test-Path $_.FullName) {
Remove-Item $_.FullName -Force -Verbose
Write-Host "$($_.Name) deleted."
}
}Delete Files Older Than a Certain Date in PowerShell
You might want to delete files that are older than a certain date using PowerShell. This can be done by comparing the LastWriteTime property of files.
$days = 30
$limitDate = (Get-Date).AddDays(-$days)
Get-ChildItem -Path $folderPath | Where-Object { $_.LastWriteTime -lt $limitDate } | ForEach-Object {
Remove-Item $_.FullName -Force -Verbose
Write-Host "$($_.Name) deleted because it was older than $days days."
}Conclusion
This tutorial explains checking for the existence of a file and deleting it using PowerShell. The Test-Path cmdlet is used to verify the existence of a file, while the Remove-Item cmdlet is used for deletion.
In this PowerShell tutorial, I have explained how to delete file if exists in PowerShell with examples.
You may also like:
- How To Create File If Not Exists In PowerShell?
- How to Check if a File Exists in PowerShell?
- How to Replace Text in a File Using PowerShell?
- How to Create a Password-Protected Zip File Using PowerShell?
Bijay Kumar is an esteemed author and the mind behind PowerShellFAQs.com, where he shares his extensive knowledge and expertise in PowerShell, with a particular focus on SharePoint projects. Recognized for his contributions to the tech community, Bijay has been honored with the prestigious Microsoft MVP award. With over 15 years of experience in the software industry, he has a rich professional background, having worked with industry giants such as HP and TCS. His insights and guidance have made him a respected figure in the world of software development and administration. Read more.