Hvordan kopiere eller flytte filer i PowerShell
Lurer du på hvordan du kopierer eller flytter filer med PowerShell?
Denne S-sonen lærer deg hvordan du bruker PowerShell til å kopiere en fil med Get-ChildItem og Kopi-element Cmdlets. Veiledningen dekker tre måter å kopiere filer med PowerShell.
Til slutt vil du også lære hvordan du flytter filer med PowerShell. I motsetning til å kopiere en fil, slettes filen fra kilden når du flytter en fil.
Bla gjennom innleggsemner
- Hvordan kopiere en enkelt fil med PowerShell
- Hvordan kopiere alle filtyper i en mappe med PowerShell
- Slik kopierer du alle filtyper i en mappe og alle undermapper
- Slik flytter du filer i PowerShell
Hvordan kopiere en enkelt fil med PowerShell
I denne første delen vil jeg lære deg hvordan du kopierer en enkelt fil med PowerShell. Enten du kopierer en enkelt fil eller alle filene i en mappe - PowerShell-kommandoen har 2 deler.
I den første delen av kommandoen bruker du Get-ChildItem Cmdlet til liste filen. Så du rør utgangen av Get-ChildItem kommando til Kopi-element Cmdlet.
Hvordan liste en fil med Get-ChildItem
Som jeg nevnte i introduksjonen av denne delen, før du kopierer en fil med PowerShell, må du først liste det med Get-ChildItem .
I dette eksemplet vil jeg kopiere filen som heter Byte Count Tool, fra dens gjeldende mappe til D:G-DriveWork ToolsProducts Portal 2.
beste craigslist app for ipad
For å liste opp tekstfilen, kjører jeg kommandoen nedenfor:
|_+_|Den raskeste måten å kjøre kommandoen på er å plassere en PowerShell-prompt side ved side av mappen med filen. Gå deretter inn Get-ChildItem i PowerShell-ledeteksten – trykk på mellomromstasten for å legge til et mellomrom.
Deretter drar du filen fra mappen til PowerShell-ledeteksten.
Til slutt, for å vise filegenskapene, med PowerShell-ledeteksten åpen, trykk enter-tasten.
Hvordan røre utgangen av Get-ChildItem Til Kopi-element
Når du har listet opp egenskapene til filen du vil kopiere, sender du den til Kopi-element . Deretter, på Kopi-element del av kommandoen, spesifiser mappen du vil kopiere filen til.
Her er PowerShell-kommandoen for å kopiere en fil:
|_+_| Jeg la til anførselstegn rundt mappebanen fordi den har mellomrom i mellom.Når du trykker enter, vil kommandoen utføres - filen vil bli kopiert til den angitte destinasjonen
Hvordan kopiere alle filtyper i en mappe med PowerShell
I den siste delen av denne veiledningen viste jeg deg hvordan du kopierer en enkelt fil med PowerShell. Det kan imidlertid være situasjoner der du må kopiere alle filtyper i en mappe.
I denne delen lærer du hvordan du kopierer alle filer med en bestemt filtype fra en mappe til en annen mappe. Det kan for eksempel være lurt å kopiere alle filer med filtypen .log fra C:Windows til en annen mappe.
Denne prosessen ligner på å kopiere en enkelt fil, men den krever flere trinn. Nærmere bestemt, for å kopiere mer enn én fil med PowerShell, må vi lage et enkelt skript.
Den første delen av skriptet innebærer å bruke Get-ChildItem Cmdlet for å vise filene du vil kopiere. Deretter, i den andre delen av skriptet, vil du bruke For hver løkke for å iterere gjennom listen over filer.
Til slutt, innenfor For hver loop, vil du inkludere Kopi-element Cmdlet for å kopiere hver av filene til ønsket destinasjon.
For å gjøre det enkelt for deg å forstå det enkle PowerShell-skriptet vi er i ferd med å lage, vil jeg dele denne delen inn i to underseksjoner.
Slik viser du alle filtyper med Get-ChildItem
I dette eksemplet vil jeg kopiere alle filer med filtypen .log fra C:Windows til D:Log Files. Imidlertid, som allerede antydet ovenfor, er det første trinnet å bruke Get-ChildItem Cmdlet for å vise alle filene med .log filtypen.
Nok en gang, for å gjøre det enkelt for deg å forstå den siste kommandoen, la oss starte fra det grunnleggende. For det første, la oss liste alle filer og mapper i kildemappen - med kommandoen nedenfor:
|_+_|Den siste kommandoen viser både filer og mapper.
Vi ønsker imidlertid å bruke PowerShell til kun å kopiere filer med filtypen .log. Så vi vil legge til en annen kommandobit som viser disse filene alene.
Ta en ny titt på det siste skjermbildet. Den siste kolonnen heter Navn. Dette er navnet på filen eller mappen. Vi vil bruke denne informasjonen snart.For å oppnå dette målet vil vi overføre utdataene fra Get-ChildItem C:Windows til en Hvor-objekt kommando. Her er kommandoen som gjør det trikset.
|_+_| Husker du at jeg ba deg legge merke til Navn-kolonnen fra resultatet av Get-ChildItem C:Windows? I PowerShell bruker du $_. automatisk variabel for å referere til objekter. I kommandoen ovenfor fortalte jeg PowerShell å vise bare objekter med et navn som inkluderer '.log'. Til slutt sendte jeg resultatet til Select-Object Cmdlet og ba den vise Fullt navn av filen. De Fullt navn inkluderer filbanen.Her er resultatet av kommandoen ovenfor. Vi har eliminert all annen informasjon – vi har nå bare filene vi trenger å kopiere. Vi er imidlertid ikke ferdige med denne delen - før du fortsetter til den siste delen av å lage skriptet, må vi legge til en bit til.
Den biten er å legge til den siste kommandoen til en variabel - jeg vil kalle variabelen loggfiler . Her er kommandoen som gjør den jobben.
|_+_|Den eneste forskjellen mellom denne kommandoen og den siste er $logfiles = bit. Dette forteller PowerShell å lagre utdataene fra Get-ChildItem C:Windows | Where-Object { $_.Name -like '*.log' } | Velg-objekt fullt navn – i en variabel kalt loggfiler .
I motsetning til den siste kommandoen, hvis jeg nå kjører den nyeste kommandoen, vil den ikke vise noe resultat. Grunnen til dette er at utgangen nå lagres i variabelen i stedet for å vise den på konsollen.
Slik kopierer du flere filer med PowerShell For hver Løkke
I denne siste delen av å lage manuset vårt vil vi introdusere det magiske For hver sløyfe . Hvis du vil lese mer om ForEach-løkken og dens syntaks, klikker du på ForEach-løkken .
Generelt ser syntaksen til en ForEach-løkke slik ut:
|_+_|Så hvis vi bruker dette på situasjonen vår – med tanke på at vi ønsker å kopiere alle filene med .log-utvidelsen med PowerShell – vil ForEach-kommandoen vår se slik ut:
|_+_|Til slutt, la oss kombinere denne siste kommandoen med Get-ChildItem fra den siste delen. Det endelige manuset vil se slik ut:
|_+_| Legg merke til hvordan jeg inkluderte. Fullt navn i $logfiles-delen av ForEach-løkken. Dette er fordi jeg brukte Select-Object Cmdlet i den første delen av kommandoen. Hvis du legger til den biten, elimineres kolonnenavnet. Ellers vil kommandoen returnere feil.Hvis du kopierer kommandoene ovenfor til PowerShell ISE og lagrer det, har du skriptet ditt! Du kan imidlertid fortsatt kjøre de individuelle kommandoene som vist på skjermbildet nedenfor.
Kommandoen ovenfor kjører og PowerShell går tilbake til ledeteksten som om ingenting har skjedd. Men når du åpner målmappen du spesifiserte i ForEach-løkkebiten til kommandoen, ville PowerShell-kommandoen ha kopiert filene – se skjermbildet nedenfor...
Slik kopierer du alle filtyper i en mappe og alle undermapper
Så langt har denne veiledningen dekket trinnene for å kopiere en enkelt fil med PowerShell. Videre har veiledningen også dekket trinnene for å kopiere flere filer fra en mappe.
Vi har dekket noen flotte PowerShell-filkopieringssituasjoner.
Det er imidlertid situasjoner når du trenger å kopiere alle filer med en bestemt filtype fra en mappe og alle dens undermapper .
Hvis jeg fortsetter med mitt siste eksempel, si at jeg vil kopiere alle filer med filtypen .log fra C:Windows mappe og alle dens undermapper – jeg vil ganske enkelt endre Get-ChildItem del av denne kommandoen:
|_+_|For å få Get-ChildItem kommandoen for å vise alle filer med filtypen .log i C:Windows og alle undermappene – jeg vil legge til en Get-ChildItem kommandoparameter kalt Gjentakelse .
Med dette i tankene vil min nye kommando nå se slik ut:
|_+_|For å få poenget mitt hjem, vil jeg kjøre kommandoen Get-ChildItem uten $logfiles = bit. Kommandoen returnerer feil fordi jeg prøver å få tilgang til filer som jeg ikke har tilgang til.
For å fikse denne feilen, la meg prøve å åpne PowerShell som administrator. Nå, når jeg kjører den samme kommandoen, returnerer den noen resultater.
I motsetning til den siste kommandoen som ikke inkluderte Gjentakelse parameter, returnerer denne kommandoen mye flere filer. Dette er fordi kommandoen returnerte alle filene i mappen på øverste nivå, så vel som filer i alle undermappene.
Til slutt, for å kopiere alle filene i en mappe og alle undermappene med PowerShell, kjør en kommando som ligner på kommandoen nedenfor.
Husk å endre mappedelene dine. Jeg har endret kilde- og destinasjonsmappebanene for å gjøre det enkelt for deg å oppdage og endre dem til din. |_+_| Hvis du vil lagre denne kommandoen i PowerShell ISE og kjøre den som et skript, kan det være lurt å legge til ErrorAction-variabelen i Get-ChildItem-kommandoen. Med ErrorAction-variabelen vil det endelige skriptet se slik ut: |_+_|Slik flytter du filer i PowerShell
Bortsett fra å kopiere filer, kan PowerShell også Bevege seg filer. Forskjellen er at når du flytter en fil, slettes den fra kildemappen.
Så hvis kopiering og flytting av filer er omtrent det samme, betyr det at du kan bruke de samme kommandoene som vi har brukt i denne veiledningen med en liten modifikasjon.
For å gjøre det enkelt, har jeg listet opp alle kommandoene som er dekket i denne veiledningen så langt. Deretter gir jeg for hver kommando flytte filen ekvivalent med kommandoen.
Før jeg fortsetter, er det viktig å nevne at den eneste forskjellen i kommandoene er Copy-Item-biten. I stedet for å bruke Kopi-element for å kopiere en fil, for å flytte en fil, vil du bruke Flytt-element .Hvordan flytte en enkelt fil med PowerShell
Kommandoen for å kopiere en enkelt fil i PowerShell er:
|_+_|Men for å flytte filen, bruk denne kommandoen i stedet:
|_+_|Hvordan flytte alle filtyper i en mappe med PowerShell
Som allerede diskutert ovenfor, her er kommandoene for å kopiere alle filtyper i en mappe.
|_+_|På den annen side, for å flytte filene, bruk denne kommandoen i stedet.
IKKE kjør kommandoen nedenfor uten å endre C:Windows del. Hvis du kjører kommandoen, kan viktige operativsystemfiler flyttes og datamaskinen din kan bli ustabil. Disse kommandoene er kun for illustrasjonsformål! |_+_|Hvordan flytte alle filtyper i en mappe og alle undermapper
Til slutt kopierer kommandoene nedenfor alle filene i kildemappen og alle undermappene.
|_+_|For å flytte filene, bruk denne kommandoen i stedet.
|_+_|Jeg håper du syntes metodene for å kopiere og flytte filer med PowerShell diskutert i denne veiledningen var nyttige.
Hvis du synes det var nyttig, vennligst stem Ja til spørsmålet Var dette innlegget nyttig nedenfor.
Men hvis ingen av metodene fungerte for deg eller du trengte noe annet enn de diskuterte metodene, klikk Nei til spørsmålet Var dette innlegget nyttig nedenfor. Gi oss deretter ytterligere detaljer. Vi gjennomgår lesernes tilbakemeldinger og oppdaterer guidene våre for å kontinuerlig møte dine behov.Alternativt kan du stille et spørsmål, legge igjen en kommentar eller gi tilbakemelding med Legg igjen et svar-skjemaet mot slutten av denne siden.
Til slutt, for flere PowerShell tech S Zones, besøk vår Windows PowerShell How-To guide-side. Du kan også finne vår Work from Home-side veldig nyttig.


