# 内容摘要

  • 文件路径操作
  • 文件读写操作
  • 其他文件相关操作

####1. 文件路径操作

  • 获取当前文件的绝对路径

    1
    2
    3
    4
    # 方法1
    (Get-Item test.txt).FullName
    # 方法2
    (Get-Childitem test.txt).FullName

    结果

    1
    \Users\root\Desktop\test.txt
  • 获取文件所在目录路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 方法1: 通过文件系统获取
    (Get-Item test.txt).Directory.FullName
    (Get-Childitem test.txt).Directory.FullName

    # 方法2: 利用split-path 切割路径
    $filePath = (Get-Item test.txt).FullName
    Split-Path $filePath

    # split-path 获取文件名
    Split-Path $filePath -Leaf

    结果

    1
    \Users\root\Desktop
  • 判断当前路径是文件还是文件夹

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $path = '\Users\root\Desktop'
    # 方法1 Test-Path
    Test-Path $path -PathType Container
    Test-Path $path -PathType Leaf

    # 方法3 Get-Item
    (Get-Item $path) -is [IO.fileinfo]
    (Get-Item $path) -is [IO.DirectoryInfo]

    # 方法2 System.IO 最快
    [System.IO.Directory]::Exists($path)
    [System.IO.File]::Exits($path)
  • 相对路径转换为绝对路径

    1
    (Resolve-Path './').Path

    结果

    1
    \Users\root\Desktop
  • 获取文件夹下所有文件

    1
    2
    3
    4
    # 获取当前目录下所有文件名
    (Get-Childitem './').Name
    # 获取当前目录下所有文件的绝对路径
    (Get-Childitem './').FullName

    结果

    1
    2
    3
    4
    test.txt
    demo.txt
    \Users\root\Desktop\test.txt
    \Users\root\Desktop\demo.txt
  • Tips: 测试代码运行时间

    1
    2
    3
    Measure-Command {Command or a code block}
    # example
    Measure-Command {Test-Path './test.txt' -PathType Leaf}

    结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Days              : 0
    Hours : 0
    Minutes : 0
    Seconds : 0
    Milliseconds : 1
    Ticks : 12989
    TotalDays : 1.50335648148148E-08
    TotalHours : 3.60805555555556E-07
    TotalMinutes : 2.16483333333333E-05
    TotalSeconds : 0.0012989
    TotalMilliseconds : 1.2989

####2. 文件读写操作

  • 读文件

    1
    2
    3
    4
    5
    6
    # 按行读入,得到一个数组
    $content = Get-Content 'test.txt'

    # 一次性读入所有的文件
    $content = Get-Content 'test.txt' -Raw
    $content = [io.file]::ReadAllLines($file)
  • 写文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $content = 'Hello World!'
    $file = 'test.txt'
    # 方法1 Out-File 通过管道(比较慢)
    $content | Out-File $file

    # 方法2 Out-File
    Out-File $file -InputObject $content

    # 方法3 io.file
    [io.file]::WriteAllLines($file, $content, [text.encoding]::Unicode)

    # 方法4 Set-Content
    Set-Content $file -Value $content -Encoding Unicode

    # 方法5 命令行操作
    $content > $file

####3. 其他文件相关操作

  • 文件复制

    1
    Copy-Item $srcFile $dstFile
  • 文件移动

    1
    Move-Item $srcFile $dstFile
  • 文件删除

    1
    Remove-Item $file
To say goodbye is to die a little.

——《The Long Goodbye》

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

chaihj15 微信支付

微信支付

chaihj15 支付宝

支付宝