我已经创建了一个脚本,用于清理我工作中的某些驱动器。我被要求创建一个日志,并在移动文件后将其保留在源文件夹中。
目前,该过程很慢,因为我的脚本会创建一个文件文件文件,该文件符合我输入的参数。一旦我验证了它,或者编辑了文本文件,我就允许脚本读取文件并继续做它需要做的事情。我正在使用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
}
答案 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是否已存在。