在Powershell中使用Out-File捕获文件路径

时间:2017-08-24 13:22:24

标签: powershell

我已经创建了一个脚本,用于清理我工作中的某些驱动器。我被要求创建一个日志,并在移动文件后将其保留在源文件夹中。

目前,该过程很慢,因为我的脚本会创建一个文件文件文件,该文件符合我输入的参数。一旦我验证了它,或者编辑了文本文件,我就允许脚本读取文件并继续做它需要做的事情。我正在使用Out-File创建此原始文本文件。显然,文件的路径发生了变化,因为我正在将它们从一个驱动器移动到另一个驱动器。我想记录他们的新路径,但似乎无法弄清楚如何做到这一点。

脚本创建和读取的文件如下所示:

C:\This\Is\The\Source\Something.rpt
C:\This\Is\The\Source\Somethingelse.bak
C:\This\Is\The\Source\AnotherFile.jpg

我希望创建一些能够在文件移动后反映新路径的内容。以我尝试的不同方式,我最终没有任何结果,或者只是复制了最后一个文件,这会告诉我Out-File没有附加,但每次获取新文件路径时都会覆盖。

列表将继续下去。以下是我的脚本中的一点,我遇到了问题:

$path = Read-Host "What path should I look at?"

$SourceFolder = $path

$files = Get-ChildItem $path  -Recurse
| Where-Object {$_.lastwritetime.Date -eq $targetdate}
|Where-Object {$_.PSIsContainer -eq $false} 
| ForEach-Object {$_.fullname}
| Out-File $OutFileCopy

$Target =  Read-Host "What is the destination?" 

Write-Host "Please view the text file created." -foregroundcolor "yellow" -backgroundcolor "red"
Invoke-Item $OutFileCopy

$CopyContinueAnswer = Read-Host "Would you like to continue? Y or N?"

If ($CopyContinueAnswer -eq 'Y') {

    $Readfile = Get-Content $outfilecopy

 $ReadFile | Where-Object {$_.PSIsContainer -eq $false}
    foreach ($file in $ReadFile)  {        

    $logfile = "$Sourcefolder\log.txt"
    out-file $logfile

        Write-Host  "The old path is $File"

        $TargetPath = $File.Replace($SourceFolder, $Target) 

        if (!(Test-Path $TargetPath)){

            Write-Host  "This is the new path $TargetPath" -foregroundcolor "Magenta"
            Write-Host               

            Copy-Item  -path $file -Destination $TargetPath                 

            Write-output $TargetPath | out-file $logfile                 

        }

2 个答案:

答案 0 :(得分:2)

默认情况下,

library(data.table) setDT(d1)[, out := first(V1), by = cumsum(c(1, diff(V1) != 1))] 会覆盖现有文件。如果您不希望发生这种情况,请使用Out-File。我建议查看Out-File -append的Microsoft文档;您可以通过在任何PowerShell提示符下键入Get-Help Out-File或单击链接来找到它。

答案 1 :(得分:0)

我想在foreach循环中创建我想要记录新文件路径的文件。每当它进入下一个文件时,它将重新创建log.txt文件并删除之前的文件。现在我已经将它从循环中取出,我没有记录任何内容的问题,或者只记录了通过循环记录的最后一个文件。

我将创建脚本的一部分,以便在尝试创建log.txt之前查看log.txt是否已存在。