`

PowerShell基础教程(23)——处理文件和文件夹

阅读更多

PowerShell基础教程(23)——处理文件和文件夹             <o:p></o:p>

Windows PowerShell 驱动器中导航和操作这些驱动器上的项目与操作 Windows 物理磁盘驱动器上的文件和文件夹类似。本部分将讨论如何处理特定的文件和文件夹操作任务。

列出文件夹中的所有文件和文件夹<o:p></o:p>

可以使用 Get-ChildItem 获取文件夹中的所有直接项。添加可选的 Force 参数可以显示隐藏项或系统项。例如,以下命令显示 Windows PowerShell 驱动器 C(与 Windows 物理驱动器 C 相同)的直接内容:

Get-ChildItem -Force C:\<o:p></o:p>

<o:p> </o:p>

该命令仅列出直接包含的项与使用 Cmd.exe DIR 命令或 UNIX 外壳程序中的 ls 非常类似。为了显示包含的项,还需要指定 - Recurse 参数。(这可能需要极长的时间才能完成。)列出 C 驱动器上的所有内容:

Get-ChildItem -Force C:\ -Recurse<o:p></o:p>

<o:p> </o:p>

Get-ChildItem 可以使用其 PathFilterInclude Exclude 参数筛选项但是这些操作通常仅基于名称。使用 Where-Object,可以基于项的其他属性执行复杂的筛选。

以下命令查找 Program Files 文件夹中上次修改日期晚于 2005 10 1 日并且既不小于 1 MB 也不大于 10 MB 的所有可执行文件

Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript {($_.LastWriteTime -gt "2005-10-01") -and ($_.Length -ge 1m) -and ($_.Length -le 10m)}<o:p></o:p>

<o:p> </o:p>

复制文件和文件夹<o:p></o:p>

复制是使用 Copy-Item 进行的。以下命令将 C:\boot.ini 备份到 C:\boot.bak

Copy-Item -Path c:\boot.ini -Destination c:\boot.bak<o:p></o:p>

<o:p> </o:p>

如果目标文件已经存在则复制尝试将会失败。若要覆盖预先存在的目标,请使用 Force 参数:

Copy-Item -Path c:\boot.ini -Destination c:\boot.bak -Force<o:p></o:p>

<o:p> </o:p>

甚至在目标为只读时此命令也有效。

复制文件夹的方法与此相同。以下命令以递归方式将文件夹 C:\temp\test1 复制到新文件夹 c:\temp\DeleteMe

Copy-Item C:\temp\test1 -Recurse c:\temp\DeleteMe<o:p></o:p>

<o:p> </o:p>

也可以复制所选项。以下命令将 c:\data 中任何位置所包含的所有 .txt 文件复制到 c:\temp\text

Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination c:\temp\text<o:p></o:p>

<o:p> </o:p>

仍然可以使用其他工具执行文件系统复制。XCOPYROBOCOPY COM 对象 Scripting.FileSystemObject均可以在 Windows PowerShell 中使用。例如,可以使用 Windows Script Host Scripting.FileSystem COM 类将 C:\boot.ini 备份到 C:\boot.bak

(New-Object -ComObject Scripting.FileSystemObject).CopyFile("c:\boot.ini", "c:\boot.bak")<o:p></o:p>

<o:p> </o:p>

创建文件和文件夹<o:p></o:p>

在所有 Windows PowerShell 提供程序中创建新项的方法都是相同的。如果 Windows PowerShell 提供程序具有多种类型的项(例如,FileSystem Windows PowerShell 提供程序区分目录和文件),则需要指定项类型。

以下命令创建新文件夹 C:\temp\New Folder

New-Item -Path 'C:\temp\New Folder' -ItemType "directory"<o:p></o:p>

<o:p> </o:p>

以下命令创建新的空文件 C:\temp\New Folder\file.txt

New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType "file"<o:p></o:p>

<o:p> </o:p>

删除文件夹中的所有文件和文件夹<o:p></o:p>

可以使用 Remove-Item 删除包含的项但是如果该项包含其他内容将提示您确认删除。例如如果尝试删除包含其他项的文件夹 C:\temp\DeleteMeWindows PowerShell 会在删除该文件夹之前提示您进行确认

Remove-Item C:\temp\DeleteMe<o:p></o:p>

<o:p> </o:p>

确认<o:p></o:p>

C:\temp\DeleteMe 中的项具有子项并且没有指定 -recurse 参数。如果继续,所有子项均将随该项删除。是否确实要继续?<o:p></o:p>

[Y]   [A] 全是  [N]   [L] 全否  [S] 挂起  [?] 帮助<o:p></o:p>

默认值为Y”):<o:p></o:p>

<o:p> </o:p>

如果对于每个包含的项不希望被提示请指定 Recurse 参数

Remove-Item C:\temp\DeleteMe -Recurse<o:p></o:p>

<o:p> </o:p>

将本地文件夹映射为 Windows 可访问驱动器<o:p></o:p>

也可以使用 subst 命令映射本地文件夹。以下命令创建位于本地 Program Files 目录中的本地驱动器 P:

subst p:$env:programfiles<o:p></o:p>

<o:p> </o:p>

就像网络驱动器一样使用 subst Windows PowerShell 中映射的驱动器立即对 Windows PowerShell 会话可见。

将文本文件读入数组<o:p></o:p>

文本数据的更常见存储格式之一是存储在将不同行视为不同数据元素的文件中。可以使用 Get-Content cmdlet 一步读取整个文件,如下所示:

PS> Get-Content -Path C:\boot.ini<o:p></o:p>

[boot loader]<o:p></o:p>

timeout=5<o:p></o:p>

default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS<o:p></o:p>

[operating systems]<o:p></o:p>

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"<o:p></o:p>

/noexecute=AlwaysOff /fastdetect<o:p></o:p>

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=" Microsoft Windows XP Professional <o:p></o:p>

with Data Execution Prevention" /noexecute=optin /fastdetect<o:p></o:p>

<o:p> </o:p>

Get-Content 已将从文件读取的数据视为一个数组文件内容的每行上有一个元素。可以通过检查所返回内容的 Length 对此进行确认:

PS> (Get-Content -Path C:\boot.ini).Length<o:p></o:p>

6<o:p></o:p>

<o:p> </o:p>

对于直接从 Windows PowerShell 获取信息列表此命令是最有用的。例如,可能将计算机名称或 IP 地址的列表存储在文件 C:\temp\domainMembers.txt 中,文件的每行上有一个名称。可以使用 Get-Content 检索文件内容,并将其放置在变量 $Computers 中:

$Computers = Get-Content -Path C:\temp\DomainMembers.txt<o:p></o:p>

<o:p> </o:p>

$Computers 现在是其每个元素中都包含计算机名称的数组。

 
分享到:
评论

相关推荐

    PowerShell基础教程.doc

    PowerShell的基础教程主要涵盖了它与传统外壳程序的区别、Cmdlet的使用、全新的脚本语言特性和与Windows命令及实用工具的集成。 1. **处理方式的不同**: PowerShell 不像传统的Cmd.exe或其他Unix外壳程序那样处理...

    PowerShell获取指定目录下文件列表和大小并保存成txt文档

    PowerShell获取指定目录下文件列表和大小并保存成txt文档

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    本书全面地介绍了Windows Server 2008命令行、PowerShell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,...

    PowerShell教程

    4. **提供者**: PowerShell支持多种提供者,如文件系统提供者(允许对文件和目录进行操作)和注册表提供者(允许访问注册表键和值)。 **PowerShell进阶** 1. **脚本编写**: PowerShell支持使用PowerShell语言编写...

    PowerShell基础教程

    【PowerShell基础教程】 PowerShell是一种专为管理和自动化Windows操作系统设计的强大脚本语言,自Windows XP/Server 2003起,它逐渐成为Vista、Server 2008及后续版本的标准组件。PowerShell旨在提升系统管理员的...

    PowerShell 基础教程

    【PowerShell基础教程】 PowerShell是一种强大的脚本语言和命令行shell,主要应用于Windows操作系统,如XP、Server 2003、Vista和Server 2008。不同于传统的外壳程序(如Cmd.exe、SH、KSH、CSH和BASH),PowerShell...

    Windows PowerShell教程合集

    精心挑选和整理的关于Windows PowerShell的教程 |powershell 技术文档 --|Powershell_技术教程.doc --|PowerShell基础教程 --|WindowsPowerShelluserGuide |powershell 中文教程 --|Windows PowerShell 入门指南...

    经典PowerShell入门教程.docx

    传统外壳程序如Cmd.exe、SH、KSH、CSH和BASH通常以文本格式处理命令输出,而PowerShell则处理基于.NET平台的对象,这使得数据处理更为灵活和强大。 PowerShell的核心概念之一是Cmdlet(发音为“command-let”),...

    powershell3.0经典教程

    例如,可以像操作文件夹和文件一样操作Windows注册表项。 4. **使用PowerShell远程管理和作业(Remoting and Jobs)**: - PowerShell的远程功能允许用户远程执行命令和脚本,使得管理远程计算机变得更加容易。 -...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    powershell脚本转exe文件

    标题和描述中提到的"powershell脚本转exe文件"就是这个过程。下面将详细解释如何实现这一转换以及其背后的原因和相关知识点。 PowerShell是一种由Microsoft开发的强大命令行接口,它提供了丰富的脚本编写能力,用于...

    Powershell脚本可将文件和文件夹(包括子文件夹)从一个位置移动到x天之前的位置

    标题中的“Powershell脚本可将文件和文件夹(包括子文件夹)从一个位置移动到x天之前的位置”指的是使用PowerShell脚本来自动化处理文件和目录的移动任务,特别是针对那些在过去特定天数内未被访问或修改过的文件。...

    powershell教程

    PowerShell 是一个强大的命令行脚本环境,由微软开发并提供支持,主要用于 Windows 系统的管理和自动化任务处理。自 Exchange Server 2007 和 System Center 2007 等产品开始,PowerShell 成为了许多微软产品的重要...

    精通windows server 2008 命令行与powershell电子书PDF版(第二卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    监控局域网内 共享打印机powershell脚本

    监控局域网内:共享打印机 获取打印记录、打印人员、打印文件等详细信息。导出为excel表格

    Powershell 实例教程

    PowerShell 是一个强大的命令行脚本环境,专为Windows操作系统设计,用于系统管理和应用程序自动化。它不仅扩展了传统的命令提示符(cmd.exe),而且从根本上改变了交互式管理的方式。PowerShell 基于.NET框架,因此...

    精通windows server 2008 命令行与powershell电子书PDF版(第三卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    用PowerShell 命令批量修改文件C#文件版本号文件

    在运行脚本前,你需要确保有权限修改项目文件,并且对PowerShell有一定的了解,知道如何执行脚本和处理可能出现的错误。此外,你可能还需要安装Visual Studio的Developer Command Prompt,这样可以在命令行中直接...

Global site tag (gtag.js) - Google Analytics