分别读取每个文件的脚本

时间:2016-11-30 15:08:43

标签: powershell

我有一个文件夹,在该文件夹中,它有.txt文件,传真号码作为文件名的一部分(前10个字符包含传真号码)。

我正在尝试编写一个脚本来读取传真号码的每个文件名,然后将其写入“控制文件”。

但是,无法一次将所有传真号码放入控制文件中。我需要它来读取文件1的传真号码并将其写入控制文件,然后移动到文件2,读取传真号码并用文件2的传真号码覆盖控制文件。依此类推。

我到目前为止的脚本读取传真号码并写入控制文件,但它会读取所有传真号码并将每个传真号码添加到控制文件中。我需要一个一个地写。

这是我到目前为止所做的:

$directory = "C:\Users\blah\Desktop\TestFolder"
$controlfile = "C:\Users\blah\Desktop\Scripts\control.txt"

$filename = Get-ChildItem -path $directory -name -filter *.txt 
foreach($file in $directory)
{
    $faxnumber = $filename.substring(0,10) 
    Set-Content $controlfile "<tofaxnum:$faxnumber>
<toname:XXX>
<tocompany:XXX>
<fromname: XXX>
<fromphone:XXX>" -force
}

因此,如果$directory中有3个文件,它会将所有3个传真号码写入控制文件,而不是查看第一个文件然后写入,然后移动到第二个文件然后写入,然后写入第3个文件。您可以提供的任何帮助或想法将非常感谢。

1 个答案:

答案 0 :(得分:2)

您必须迭代从Get-ChildItem cmdlet返回的每个文件名,而不是在循环中使用文件名

$directory = "C:\Users\blah\Desktop\TestFolder"
$controlfile = "C:\Users\blah\Desktop\Scripts\control.txt"

$filenames = Get-ChildItem -path $directory -name -filter *.txt 
foreach($filename in $filenames)
{
    $faxnumber = $filename.substring(0,10) 
    Set-Content $controlfile "<tofaxnum:$faxnumber>
<toname:XXX>
<tocompany:XXX>
<fromname: XXX>
<fromphone:XXX>" -force
}