Powershell脚本过滤文件并使用奇偶数(从1到2)重命名文件]]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Powershell脚本过滤文件并使用奇偶数(从1到2)重命名文件]]相关的知识,希望对你有一定的参考价值。

[请在下面的脚本中查找,它的作用是找到* .txt文件,并使用filename.host1.txt或filename.host2.txt进行重命名。

我的要求是它应该以顺序模式创建,而不是随机创建(当前,它是作为随机基础而不是以顺序模式创建Host1或host2的,如果第一个文件将其重命名为file1.host1.txt,则第二个文件应该是file2.host2.txt,第三个文件将是file3.host3.txt,第四个文件将再次以file4.host1.txt,file5.host2.txt,file4.host3.txt开头。基本上从我想每当文件夹中检测到新文件时就将“ host1”添加到“ host3”,并以从1到3的顺序模式创建文件。 Host1,Host2,Host3我使用了三个虚拟机来执行sperete脚本。这是我的脚本。.

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "C:\test"
    $watcher.Filter = "*.txt"
    $watcher.IncludeSubdirectories = $false
    $watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action =  $path = $Event.SourceEventArgs.FullPath
                $filename = [io.path]::GetFileNameWithoutExtension($path)
                ###$changeType = $Event.SourceEventArgs.ChangeType
                ###$logline = "$(Get-Date), $changeType, $path, $filename"
                ###Add-content "D:\log.txt" -value $logline
                ###$proc=start-process "D:\source\$filename.bat" -Wait -NoNewWindow
                $script:counter++
                $hostname=""
                 if(($script:counter % 2) -eq 0)
                    $hostname="host1"
                 Else 
                    $hostname="host2"
                
                Rename-Item -Path "C:\test\$filename.txt" -NewName "$filename.$hostname.txt"
                  
### DECIDE WHICH EVENTS SHOULD BE WATCHED 
    Register-ObjectEvent $watcher "Created" -Action $action
 ###   Register-ObjectEvent $watcher "Changed" -Action $action
 ###   Register-ObjectEvent $watcher "Deleted" -Action $action
 ###   Register-ObjectEvent $watcher "Renamed" -Action $action

    while ($true) sleep 5

[请在下面的脚本中查找,它的作用是找到* .txt文件,并使用filename.host1.txt或filename.host2.txt进行重命名。我的要求是应该在顺序模式下创建,而不是在...

答案
$counter = 1
while($True)
    Get-ChildItem -Path c:\test | ? $_.FullName -notlike "*.host*.txt" | Sort-Object -Property CreationTime | % 
        if($counter % 3 -eq 0)
            $hostSuffix = 3
        elseif($counter % 3 -eq  2)
            $hostSuffix = 2
        elseif($counter % 3 -eq  1)
            $hostSuffix = 1
        
        $counter++
        Rename-Item $_.FullName -NewName "$($_.BaseName).host$($hostSuffix).txt"
    
    sleep(4)

以上是关于Powershell脚本过滤文件并使用奇偶数(从1到2)重命名文件]]的主要内容,如果未能解决你的问题,请参考以下文章

powershell Quick Powershell脚本用于复制文件并使用文件类型过滤保留文件夹结构

如何在 PowerShell 复制脚本中正确过滤多个字符串

使用 PowerShell 脚本从 Azure Blob 存储读取 JSON 文件并写回 Blob 存储中的另一个文件

如何从我的 Powershell 脚本中的 Get-ADUser 过滤器获取结果,以便验证该用户是不是存在?

Powershell 管道总结

从Powershell中的文本文件中输入值