我有一个文件夹,在该文件夹中,它有.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个文件。您可以提供的任何帮助或想法将非常感谢。
答案 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
}