繁体   English   中英

在Powershell中使用文件外捕获文件路径

[英]Capture File Paths with Out-File in 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                 

        }

默认情况下, Out-File将覆盖现有文件。 如果您不希望发生这种情况,请使用Out-File -append 我建议查看Microsoft文档中的Out-File 您可以通过在任何PowerShell提示符下键入Get-Help Out-File或单击链接来找到它。

我要记录新文件路径的文件正在foreach循环中创建。 每次进入下一个文件时,它都会重新创建log.txt文件并清除以前的文件。 现在,我已将其从循环中取出,现在不再有什么要记录的问题,或者只记录了循环中最后一个文件的问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM