Windows PowerShell读取文本文件

示例:
[code]
i=0  to=3            #iteration number
while ( ile  to )
{
cd (Get-Content dir.txt)[$i]
rm gb.gro
..\dump2gro_2000.exe
cd ..
$i +=1
}
[/code]

尽管对文本文件的需要大概在很久以前就消失了,但是系统管理员仍然需要依靠文本文件来满足他们数据存储的需要。(我们正在讨论老旧的纯文本文件,而不是 XML文件。)事实上,当涉及到文本文件时,在过去的十年间只有一件事发生了变化:现在人们想知道如何用WindowsPowerShell读取文本文件。

伙计们,你们来对地方了。

阅读是基础

到目前为止,用Windows PowerShell读取文本文件的最简单的方法是使用Get-Content cmdlet。(那其它方法呢?好的,比如,你能使用.NET Framework及System.IO类中的一些方法。)使用Get-Content来读取文本文件只需要调用该cmdlet并在其后跟上文本文件的路径。例如,以下命令用来读取文本文件C:\Scripts\Test.txt:

Get-Content C:\Scripts\Test.txt

作为读取结果,Windows PowerShell在控制台窗口显示文件内容:

Line 1

Line 2

Line 3

Line 4

Line 5

Line 6

Line 7

很棒吧?

如果你不想要在控制台窗口显示这些内容,至少不是马上显示,那么只需简单的将返回的信息赋值给一个变量,像这样:

$a = Get-Content C:\Scripts\Test.txt

你知道,当查看我们刚储存在变量中的文本文件的内容时,这也许是个好机会来确切解释信息是如何储存在变量中的。当Get-Content读取文本文件并在变量中储存内容时,数据是作为数组储存的,文件内的每一行(由一个回车换行符决定)代表了数组中的每一个项。需要证明这件事么?输入$a.GetType()命令然后看看你得到的是什么。下面的输出是你应当得到的:

IsPublic IsSerial Name BaseType

——– ——– —- ——–

True True Object[] System.Array

我们还需要关心$a是一个数组?是的,我们需要:通过将文本文件中的每一行作为数组中的单独项储存,使得PowerShell能够处理指定行(或者某些范围内的行)。例如,你想要只看文本文件的前三行?以下命令将完成这个小戏法:

(Get-Content C:\Scripts\Test.txt)[0..2]

那么我们在这里做了些什么?首先我们提取了整个C:\Scripts\Test.txt文件内的内容。注意我们将这个命令用括号括起来以便保证 PowerShell将在处理其它事之前首先完成Get-Content任务。在这之后我们使用PowerShell的标准数组标记来请求显示数组中索引号为0-2的项。(在PowerShell,或者其它计算机语言中,数组中第一项总是从索引号为0的项开始的。)那么我们最终在屏幕上会看到什么?

Line 1

Line 2

Line 3

顺便说一句,另一个显示开始的x行的方法是使用–totalcount参数,像这样:

Get-Content C:\Scripts\Test.txt -totalcount 3

在这个命令中,Get-Content将只会提取文本文件的前三行。如果你正在处理一个大文件的话,这是一个更好的方式来显示前三行,因为Get-Content将只会提取前三行。我们刚才向你呈现的那个命令,将提取整个文件,但是仅显示前三项。

现在,如何显示文本文件的最后三行文本呢?我们很高兴你能问这个问题:

(Get-Content C:\Scripts\Test.txt)[-1..-3]

再次,我们使用PowerShell的标准数组标记来指定我们要显示的文本文件的行数。[-1..-3]结构能被拆分成如下内容:

l -1代表了数组中的最后一项。索引号-2代表了数组中的倒数第二项,以此类推。

l 两个点(..)是PowerShell的范围操作符,标识我们想要获得指定的第一个值(-1)至指定的最后一个值(-3)范围内的数字。

l -3(如你可能猜想的)代表了数组中的倒数第三项。

最终结果?这就是最终结果:

Line 7

Line 6

Line 5

如果你想要从文本文件中获得指定的行那么使用类似这样的命令:

(Get-Content C:\Scripts\Test.txt)[3..5]

作为结果,我们得到了像这样的输出:

Line 4

Line 5

Line 6

不坏吧?

这里是另外一个经常被问道的问题:我如何对在文本文件中找到数据进行排序?例如,假设我们有看起来像这样的文本文件:

B

H

C

D

A

E

G

F

我们怎么样打开这个文件,对内容排序,然后显示排序后的内容?你已经知道这个问题的答案了吧?

(Get-Content C:\Scripts\Test.txt) | Sort-Object

我们在这里所做的是通过管道将文本文件的内容传递给Sort-Object cmdlet,然后让Sort-Object做它该做的事。顾名思义,其结果是:

A

B

C

D

E

F

G

H

是的,本例中PowerShell处理任务的方法比VBScript简单多了。在我们走之前让我们在尝试完成另一个任务。假设我们对定位包含特定值的文本文件感兴趣;例如,假设我们对追踪指定文件夹(C:\Scripts)中包含词组Hey, Scripting Guy!的文件感兴趣。我们怎么做?像这样:

Select-String C:\Scripts\*.txt -pattern “Hey, Scripting Guy!”

注意,我们甚至不需要使用Get-Content来打开文本文件;取而代之的是我们调用Select-String cmdlet,并传递给Select-String两个参数:

l 文件的路径是需要考虑的。如你所见,当指定路径时,我们能使用通配符。(我们用该路径来提取文件夹C:\Scripts内所有的.txt文件)

l –pattern参数,这个代表可我们需要寻找的文本。在本例中,我们使用一个简单的文本字符串(Hey, Scripting Guy!)。或者我们可以使用正则表达式,当设定该参数值时。

当运行先前的命令时,我们得到类似以下内容的输出(假设目标字符串能被找到):

C:\Scripts\Everyone.txt:3:Hey, Scripting Guy! How can I search a text file using VBScript?

C:\Scripts\Test.txt:1:Hey, Scripting Guy! How can I search a text file using Windows PowerShell?

这里的每一行的信息有多酷啊,而该信息可不是光看对象的外表就能得到的。注意如果我们将提取到的内容传递给Format-List cmdlet时将会发生什么?首先我们执行该命令:

Select-String C:\Scripts\*.txt -pattern “Hey, Scripting Guy!” | Format-List

然后我们惊奇地看到以下输出:

IgnoreCase : True

LineNumber : 3

Line : Hey, Scripting Guy! How can I search a text file using VBScript?

Filename : Everyone.txt

Path : C:\Scripts\Everyone.txt

Pattern : Hey, Scripting Guy!

IgnoreCase : True

LineNumber : 1

Line : Hey, Scripting Guy! How can I search a text file using Windows PowerShell?

Filename : Test.txt

Path : C:\Scripts\Test.txt

Pattern : Hey, Scripting Guy

只想看到每一个包含目标字符串文件的文件名?试下这个命令:

Select-String C:\Scripts\*.txt -pattern “Hey, Scripting Guy!” | Select-Object Filename

以下内容就是你应当得到的:

Filename

——–

Everyone.txt

Test.txt

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要在PowerShell读取文本文件,可以使用Get-Content命令。以下是一个示例: ``` Get-Content -Path "C:\path\to\file.txt" ``` 此命令将读取指定路径下的file.txt文件,并将其内容作为字符串数组返回。您可以将其存储在变量中,或使用其他命令对其进行操作。 ### 回答2: Powershell是一种在Windows操作系统上运行的脚本语言和Shell环境。它可以用于执行各种任务,包括读取和处理文本文件。 要使用Powershell读取文本文件,首先需要使用`Get-Content`命令。这个命令可以从指定的文件中读取内容,并将其存储在一个数组中,每一行都是数组的一个元素。 例如,假设我们有一个名为example.txt的文本文件,其中包含以下内容: ``` Hello, World! This is an example file. I like using Powershell. ``` 我们可以使用以下命令将该文件的内容读取到一个数组中: ``` $content = Get-Content -Path "example.txt" ``` 然后,我们可以使用循环来逐行处理读取到的文本内容: ``` Foreach ($line in $content) { # 对每一行进行处理 Write-Host $line } ``` 上面的代码中,`$line`是循环中的当前行内容,我们可以根据需要对每一行进行自定义处理,例如输出到控制台、进行字符串操作等。 除了使用`Get-Content`命令外,Powershell还提供了许多其他与文本文件读写相关的命令,例如`Set-Content`用于将文本写入文件、`Add-Content`用于在文件中追加文本等。 总之,通过使用Powershell的`Get-Content`命令,我们可以轻松地读取文本文件,并对其内容进行各种处理。 ### 回答3: Powershell是一种强大的脚本语言和命令行工具,可以用于读取和处理各种文件,包括txt文件。 要使用Powershell读取txt文件,可以使用Get-Content命令。通过在命令行中输入"Get-Content 路径\文件名.txt",Powershell会打开并读取指定的txt文件。 例如,如果要读取D盘根目录下的test.txt文件,可以输入命令"Get-Content D:\test.txt"。之后,Powershell读取该txt文件并将其内容显示在命令行窗口中。 除了显示文件内容外,Powershell还可以对txt文件进行其他操作。例如,可以使用|(管道)符号将Get-Content命令与其他命令结合起来,实现更复杂的操作。例如,可以使用Select-String命令在txt文件中搜索特定的字符串,并将搜索结果输出到命令行窗口中。 除了使用命令行方式,也可以在Powershell脚本中使用Get-Content命令来读取txt文件。在脚本中,可以使用变量来存储Get-Content命令的输出,以便后续处理。 总之,通过使用Get-Content命令,Powershell可以方便地读取和处理txt文件。无论是通过命令行方式还是在脚本中使用,都可以轻松操作txt文件中的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值