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-Key: 155424

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

Printed on: April 18, 2024 at 12:04 o'clock

Member: micneu
micneu Nov 19, 2010 at 16:59:57 (UTC)
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