PowerShell slett fil hvis det finnes

PowerShell slett fil hvis det finnes

Som alle andre skall er PowerShell et kraftig skall- og skriptspråk utviklet av Microsoft. PowerShell, som opprinnelig var designet for Windows, er nå tilgjengelig for alle de store plattformene. Med utgangspunkt i PowerShell 6 har det blitt en gratis og åpen kildekode-applikasjon.

I likhet med alle andre skallskripting, kan vi bruke PowerShell til å automatisere fra grunnleggende til avanserte ting. I denne guiden, sjekk ut hvordan du bruker PowerShell til å slette en fil hvis den finnes på Linux.

Sjekk om en fil eksisterer

I likhet med andre skjell, kommer PowerShell med sitt eget sett med kommandoer for å utføre forskjellige oppgaver, kjent som cmdlets. For å teste en viss uttalelse, i bash, vil vi bruke bashestatusen som sjekker om et visst argument er sant eller usant. Testuttalelsen er en generell mekanisme som kan beregne et bredt utvalg av mulige kommandoer.

Når det gjelder PowerShell, er det imidlertid spesifikke cmdlets for en spesifikk oppgave. Her trenger vi teststi for å sjekke om den gitte filen eksisterer på det definerte stedet.

Her er en enkel demonstrasjon av teststi i aksjon.

$ Test -bane -sti

Som standard vil teststien sjekke om det spesifiserte elementet eksisterer på det beskrevne stedet. Hvis det eksisterer, returnerer den den boolske verdien "sann". Ellers returnerer det “falsk”.

Slette en fil i PowerShell

I Linux vil vi bruke RM -kommandoen til å slette en fil eller katalog. Når det.

Sjekk ut Microsoft-dokumentasjonen på Fjern-elementet.

For eksempel for å fjerne en spesifikk fil, kjør følgende kommando.

$ Fjern-elementet

For å fjerne en katalog, trenger vi et ekstra alternativ “-Recurse”.

$ Fjern-elementet -Gå tilbake

Slette fil (er) hvis det eksisterer

Nå kan vi kombinere begge metodene sammen og lage et enkelt skript som vil slette en fil hvis det finnes på målstedet.

Først tilordne en variabel som vil inneholde verdien av filstien.

$ $ Filelocation = ""

Deretter bruker du teststi for å bekrefte om filen eksisterer på stedet.

$ Test-ban $ filelokalisering

Avhengig av returverdien til teststien, kan vi ta en beslutning om å fjerne målfilen. Vi kan bruke PowerShell If-Else-uttalelsen for å bestemme handlingen.

if (test-path $ fileName = true)
Fjern-elementet $ filnavn
$

La oss legge til noen ekstra meldinger for hvert mulig utfall.

if (test-path $ filelocation)
Fjern-element $ Filelocation
Skriv-vert "$ filelokalisering er fjernet"

annet
Skrive-vert "$ filelokalisering eksisterer ikke"

Implementering i et PowerShell -skript

Det er på tide å legge alle kodene i et passende PowerShell -skript. I likhet med Bash -skript kan vi bruke PowerShell -skript for å automatisere forskjellige oppgaver ved å bruke PowerShell Cmdlets og -kommandoer. På Linux deler både PowerShell og Bash -skript strukturelle likheter.

Først trenger vi plasseringen av PowerShell -kjørbar plassering. Det er viktig, da det vil være en del av Shebang. Kjør følgende kommando.

$ som styrker

Vi kan nå sette alle disse brikkene sammen i et enkelt PowerShell -skript. Et PowerShell -skript kommer med filforlengelsen PS1.

$ Nano Delete-hvis-Exist.PS1

Skriv nå koden vi har utviklet så langt.

$ Filelocation = ""
if (test-path $ filelocation)
Fjern-element $ Filelocation
Skriv-vert "$ filelokalisering er fjernet"

annet
Skrive-vert "$ filelokalisering eksisterer ikke"

Lagre filen og lukk redigereren. Merk filen som en kjørbar.

$ chmod +x slett-hvis-eksistens.PS1

Til slutt, utfør skriptet.

$ ./slett-hvis-eksisterende.PS1

Spesielle situasjoner

Slette skrivebeskyttede filer

Cmdlet fra fjerne element kan ikke slette ikke-eksisterende eller skrivebeskyttede filer. I en slik situasjon kan vi endre kommandoen for fjerne element for å slette, uavhengig av filtillatelse. Flagget "-verbose" vil skrive ut trinn-for-trinn-utgang for enklere feilsøking.

$ Fjern -element -verbose -Force $ Filelocation

La oss oppdatere det i skriptet.

$ Filelocation = ""
if (test-path $ filelocation)
Fjern -element -verbose -Force $ Filelocation
Skriv-vert "$ filelokalisering er fjernet"

annet
Skrive-vert "$ filelokalisering eksisterer ikke"

Endelig tanke

Denne guiden viser hvordan du sjekker eksistensen av en fil og basert på resultatet, hvordan du sletter den ved hjelp av Cmdlet med fjerning-element. Hvis filen er skrivebeskyttet eller tillatelse nektet, kan vi bruke parameteren "-Force" for å slette den kraftig. Til slutt implementerte vi hele skriptet.

Dette er en veldig enkel, men effektiv måte å fjerne en valg av fil/katalog. Som demonstrert er imidlertid denne generelle metoden i stand til bare å fjerne et enkelt element. Det er mulig å få listen over filer fra en katalog og bruke en loop for å slette dem trinnvis.

Glad databehandling!