Fájl és könyvtár létrehozása (new-item), ellenőrzése (test-path)

Új fájlt létrehozni a new-item  cmdlettel lehet:

[8] PS C:\scripts> new-item -Path . -Name szöveg.txt -type file -Value "Ez e

gy szöveg"

 

 

    Directory: C:\scripts

 

 

Mode           LastWriteTime       Length Name

----           -------------       ------ ----

-a---   2008.04.22.    21:31           14 szöveg.txt

Természeten nem csak a fájlt, hanem könyvtárt is készíthetünk, talán ez gyakoribb:

[9] PS C:\scripts> New-Item -Path . -Name "Alkönyvtár" -type Directory

 

 

    Directory: C:\scripts

 

 

Mode           LastWriteTime       Length Name

----           -------------       ------ ----

d----   2008.04.22.    21:33        <DIR> Alkönyvtár

Létrehozni úgy is lehet, hogy nem használjuk a ‑Name paramétert, hanem a ‑Path-ban már a létrehozni kívánt elem elérési útját adjuk meg:

PS C:\> New-Item -Path C:\PowerShell\ÚjKönyvtár -ItemType Directory

 

 

    Directory: C:\PowerShell

 

 

Mode                LastWriteTime         Length Name

----                -------------         ------ ----

d-----      2016.02.07.     23:03                ÚjKönyvtár

Könyvtár létrehozása előtt érdemes megnézni, hogy létezik-e esetleg már a könyvtár. Erre a célra a Test-Path  cmdlet áll rendelkezésünkre:

[12] PS C:\> Test-Path C:\scripts

True       

Ha még precízebbe akarunk lenni, akkor a -PathType paramétert is használjuk, ha könyvtárra kérdezünk rá, akkor Container-t kell megadni:

PS C:\> Test-Path -Path C:\scripts -PathType Container

True

Ha fájlokat, vagy ahhoz hasonló elemekre kérdezünk, akkor a ‑PathType értéke a Leaf.

Új lehetőség a PowerShell 5.0-tól kezdődően, hogy az elemek korára is rákérdezhetünk az -OlderThan vagy ‑NewerThan paraméterrel. Ilyenkoz az elem LastWriteTime tulajdonságával veti össze a megadott DateTime adatot:

PS C:\> Test-Path C:\scripts\ -OlderThan 2016.01.01

False

PS C:\> Test-Path C:\scripts\ -OlderThan 2016.03.01

True

Feladat lehet még a fájlok attribútumainak beállítása. Ezeket egyszerűen állíthatjuk be a fájlobjektumok tulajdonságainak módosításával:

[13] PS C:\> (Get-Item C:\scripts\alice.txt).attributes = "Archive, hidden"

De vajon milyen lehetőségek közül válogathatok az attribútumoknál? Ezt is megtudhatjuk, de elsőként meg kell nézni, hogy valójában milyen típusú adat a fájlok attribútuma:

[14] PS C:\> (Get-Item C:\scripts\alice.txt).attributes.gettype().fullname

System.IO.FileAttributes

Ez tehát a System.IO.FileAttributes típus, ami egy u.n. enumeration típus, aminek lékerdezhetjük a lehetséges értékeit:

PS C:\> [enum]::GetValues("System.IO.FileAttributes")

ReadOnly

Hidden

System

Directory

Archive

Device

Normal

Temporary

SparseFile

ReparsePoint

Compressed

Offline

NotContentIndexed

Encrypted

IntegrityStream

NoScrubData

A PowerShellben a típuskonverzió annyira okos, hogy a [13]-as sorban sztringként megadott fájl-attribútumokat (vesszővel elválasztott két attribútum egy sztringben) is képes volt System.IO.FileAttributes típusúvá konvertálni.

Ha egy olyan mappát szeretnénk létrehozni, aminek nem létezik még a szülő mappája, akkor ezt a New‑Item szó nélkül pótolja nekünk:

PS C:\> New-Item C:\PSKönyv\nemlétező -Name Almappa -ItemType directory

 

 

    Directory: C:\PSKönyv\nemlétező

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     21:46            Almappa

A fenti kifejezés a c:\PSKönyv\nemlétező mappát is létrehozta, mivel az nem létezett korábban.

Érdekes, ugyanez fájlok létrehozása közben nem automatikus:

PS C:\> New-Item C:\PSKönyv\nemlétező2 -Name ÚjFájl.txt -ItemType file

New-Item : Could not find a part of the path 'C:\PSKönyv\nemlétező2\ÚjFájl.txt

'.

At line:1 char:1

+ New-Item C:\PSKönyv\nemlétező2 -Name ÚjFájl.txt -ItemType file

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : WriteError: (C:\PSKönyv\nemlétező2\ÚjFájl.txt:S

   tring) [New-Item], DirectoryNotFoundException

    + FullyQualifiedErrorId : NewItemIOError,Microsoft.PowerShell.Commands.Ne

   wItemCommand

Ellenben, ha a –Force kapcsolóval futtatjuk ugyanezt, akkor megkapjuk a hiányzó mappaszinteket:

PS C:\> New-Item C:\PSKönyv\nemlétező2 -Name ÚjFájl.txt -ItemType file -Force

 

 

    Directory: C:\PSKönyv\nemlétező2

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:52          0 ÚjFájl.txt



Word To HTML Converter