2017-06-12 2 views
2

Suchen Sie auf der Website und kann nicht scheinen, einige Antworten für mich selbst zu finden.Powershell: Verschieben Sie Datei von einem Verzeichnis zu einem anderen, basierend auf Zeichenfolge innerhalb der Datei

Ich möchte ein Skript schreiben, mit dem ich Dateien basierend auf dem Inhalt der Datei von einem Ziel zu einem anderen verschieben kann.

in Besonderheiten

Quelle Ziel gelangen - V: \ SW \ FromSite kopieren Destination - V: \ SW \ ToSW Filetype - .txt String - auch Test

Im Idealfall würde ich wie zu NUR haben die Skript-Suchdateien, die mit 7 beginnen. Dies sind eindeutige Bezeichner für eine Region.

Zieh mir ein bisschen die Haare aus.

Ich benutzte die unten, die ohne Fehler läuft, aber nichts tut.

$DestDir = "V:\SW\FromSite" 
$SrcDir = "V:\SW\ToSW" 
$SearchString = "test" 

gci $SrcDir -filter 7*.txt | select-string $SearchString | select path | 
move-item -dest $DestDir -whatif 

Antwort

2

Hier ist, was ich tun würde, obwohl ich bin mir sicher, es gibt eine bessere Möglichkeit, es zu tun.

$files = gci $SrcDir -filter 7*.txt 
$files | %{ 
    if ((select-string -path $_.FullName -pattern $SearchString) -ne $null) { 
     move-item -path $_.FullName -dest $DestDir 
    } 
} 
+0

Also zusammen die unten setzen, ihre laufenden, aber nichts scheint passieren? (Entschuldigung für die Formatierung, diese Seite zerstört meinen Kopf, wenn ich auf Kommentare antworte, wobei return den Kommentar speichert anstatt eine neue Zeile zu beginnen $ DestDir = "V: \ SW \ FromSite" $ SrcDir = "V: \ SW \ ToSW" $ Search = "test" $ files = gci $ SrcDir -filter 7 * .txt $ files |% { if (. (select-string -path $ _ Fullname -pattern $ Search) -ne $ null) { move-item -path $ _. Fullname -dest $ DestDir } } – Daniel

+0

Versuchen hinzufügen von etwas mehr Leistung. vielleicht schreiben-Host-Dateien der $, um sicherzustellen, dass Ihr Filter funktioniert, und fügen Sie vielleicht eine Zuschreibung Host-Zeile innerhalb der IF-Anweisung. –

1

So haben einige mehr rumgespielt und die unten funktioniert perfekt für das, was ich brauche

get-childitem "<SourceFolder>" -filter 7*.txt - 
recurse | select-string -list -pattern "test" | move -dest "<DestinationFolder>" 

Dank alle für die Hilfe

Verwandte Themen