sirbubu
Goto Top

Powershell Script überwacht Ordner und kopiert wenn dieser Leer ist Dateien hinein

Hi

Ich habe folgendes Problem Anzahl bestimmter Dateien per Batch verschieben nun mit einem Powershell Script gelöst.

Zur verwendung dieses Scripts:
Ich habe einen Ordern in den Files zum importieren liegen. Leider habe ich 90000 Files die importiert werden sollen.
Durch die hohe Anzahl von Files benötigt der importer um die 10 Minuten um 1 File zu importieren.

Daher hier erst eine Abfrage wieviel Dateien im Ordner liegen.
Wenn dies 0 ist dann holt er sich die komplette Anzahl an Dateien und Selektiert dann soviel Files wie in der Variable angegeben.
Danach kopiert er diese Files in den Zielordner.

Die ausführung habe ich jetzt über die scheduled tasks gemacht.
Will am Montag noch einen Timer einbauen hatte jetzt aber kein bock mehr zu face-wink

$destinationpath = "C:\ZielOrdner"  
$sourcepath = "C:\SourceOrdner"  
$NoFiles = "2"  

$T = (Get-ChildItem $destinationpath).count

if ($T -eq $null)  

{
$files=  Get-ChildItem -name $sourcepath | select -First $NoFiles
$files
foreach ($File in $Files){copy-item ($sourcepath+$File) $destinationpath}
}
else
{exit}
Gruß

Sirbubu

Content-ID: 155424

Url: https://administrator.de/contentid/155424

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

micneu
micneu 19.11.2010 um 17:59:57 Uhr
Goto Top
Hallo Sirbubu,

habe mir erlaubt in dein script einen foulder check mit einzubauen.

#   **************************************************************
#   foulder-check
#
#    einmal auf der powershell ausgeführt werden
#     "Set-ExecutionPolicy Unrestricted"  
#   **************************************************************
#    
#   **************************************************************
#   * Angepasst M.N. - POWERSHELL / Entwicklung   19.11.2010      *
#   * 
#   **************************************************************

$ErrorActionPreference = 'SilentlyContinue'  

$destinationpath = "C:\Temp\11"  
$sourcepath = "C:\Temp"  
$NoFiles = "2"  
$fsw = New-Object System.IO.FileSystemWatcher
$T = (Get-ChildItem $destinationpath).count
$fsw.Path = $sourcepath
$result = $fsw.WaitForChanged("All")  
$result

if ($T -eq $null) {
    $files= Get-ChildItem -name $sourcepath | select -First $NoFiles
    $files
    foreach ($File in $Files) {
        copy-item '$sourcepath\$File' '$destinationpath'  
    }
  }

gruß michael