使用文件和文件夹 |
您所在的位置:网站首页 › powershell如何粘贴 › 使用文件和文件夹 |
使用文件和文件夹
项目
01/20/2024
在 PowerShell 驱动器中导航和操作其中的项,类似于操作 Windows 磁盘驱动器上的文件和文件夹。 本文介绍如何使用 PowerShell 处理特定文件和文件夹操作任务。 列出某个文件夹内的所有文件和文件夹可以使用 Get-ChildItem 直接获取文件夹中的所有项。 添加可选的 Force 参数以显示隐藏项或系统项。 例如,该命令直接显示 PowerShell 驱动器 C: 的内容。 Get-ChildItem -Path C:\ -Force此命令只列出直接包含的项,非常类似于在 cmd.exe 中使用 dir 命令或在 UNIX shell 中使用 ls。 为了显示子文件夹中的项,需要指定 Recurse 参数。 下面的命令列出了 C: 驱动器上的所有内容: Get-ChildItem -Path C:\ -Force -RecurseGet-ChildItem 可以使用 Path 、Filter 、Include 和 Exclude 参数来筛选项,但这些通常只以名称为依据。 使用 Where-Object,还可以执行基于项的其他属性的复杂筛选。 下面的命令用于查找上次于 2005 年 10 月 1 日之后修改,并且不小于 1 兆字节,也不大于 10 兆字节的 Program Files 文件夹中的所有可执行文件: Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript { ($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb) } 复制文件和文件夹复制通过 Copy-Item 完成。 以下命令备份 PowerShell 配置文件脚本: if (Test-Path -Path $PROFILE) { Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') }Test-Path 命令检查配置文件脚本是否存在。 如果目标文件已存在,则复制尝试失败。 若要覆盖预先存在的目标,请使用 Force 参数 : if (Test-Path -Path $PROFILE) { Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') -Force }即使当目标为只读时,该命令也有效。 复制文件夹的操作方式与此相同。 以下命令以递归方式将文件夹 C:\temp\test1 复制到新文件夹 C:\temp\DeleteMe: Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe还可以复制选定的项。 下面的命令将 C:\data 中任意位置包含的所有 .txt 文件都复制到 C:\temp\text: Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text你仍然可以运行 xcopy.exe 和 robocopy.exe 等本机命令来复制文件。 创建文件和文件夹创建新项的操作方式在所有 PowerShell 提供程序上都是一样的。 如果某个 PowerShell 提供程序具有多个类型的项(例如,用于区分目录和文件的 FileSystem PowerShell 提供程序),则需要指定项类型。 以下命令新建文件夹 C:\temp\New Folder: New-Item -Path 'C:\temp\New Folder' -ItemType Directory以下命令新建空的文件 C:\temp\New Folder\file.txt New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File重要 结合使用 Force 开关与 New-Item 命令来创建文件夹时,如果文件夹已存在,则不会 覆盖或替换此文件夹。 它会直接返回现有的文件夹对象。 不过,如果对已存在的文件使用 New-Item -Force,该文件会被覆盖。 删除某个文件夹内的所有文件和文件夹可以使用 Remove-Item 来删除包含的项,但如果项包含其他任何内容,系统就会提示你确认是否要删除。 例如,如果尝试删除包含其他项的文件夹 C:\temp\DeleteMe,在删除此文件夹前,PowerShell 会提示你确认是否要删除: Remove-Item -Path C:\temp\DeleteMe Confirm The item at C:\temp\DeleteMe has children and the Recurse parameter wasn't specified. If you continue, all children will be removed with the item. Are you sure you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):如果不希望系统针对每个包含的项都提示你,则指定 Recurse 参数: Remove-Item -Path C:\temp\DeleteMe -Recurse 将本地文件夹映射为驱动器还可以使用 New-PSDrive 命令来映射本地文件夹。 以下命令在本地 Program Files 目录中的根位置创建本地驱动器 P:(只在 PowerShell 会话中可见): New-PSDrive -Name P -Root $env:ProgramFiles -PSProvider FileSystem正如网络驱动器一样,在 PowerShell 内映射的驱动器将对 PowerShell shell 立即可见。 若要创建从文件资源管理器可见的映射驱动器,请使用 Persist 参数。 不过,只有远程路径才能与 Persist 一起使用。 将文本文件数据读取到数组中文本数据更常见的存储格式之一是采用文件形式,其中单独的行被视为不同的数据元素。 Get-Content cmdlet 可用于一步读取整个文件,如下所示: Get-Content -Path $PROFILE # Load modules and change to the PowerShell-Docs repository folder Import-Module posh-git Set-Location C:\Git\PowerShell-DocsGet-Content 将从文件读取的数据视为数组,其中每行文件内容为一个元素。 可以通过检查返回的内容的长度来确认此点: PS> (Get-Content -Path $PROFILE).Length 3此命令对于从 PowerShell 获取列表信息最为有用。 例如,你可能会在文件 C:\temp\domainMembers.txt 中存储计算机名或 IP 地址的列表,文件的每一行上都有一个名称。 可以使用 Get-Content 来检索文件内容,并将它们放置在变量 $Computers 中: $Computers = Get-Content -Path C:\temp\DomainMembers.txt$Computers 现在是数组,其中每个元素包含一个计算机名。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |