2015-11-15 1 views
0

J'ai essayé de copier des fichiers d'un dossier à un autre qui ont le mot HAUT à la fin du nom des fichiers dans leurs noms, mais ne l'ont pas. Toute suggestion?Powershell copier des fichiers avec un nom spécifique

$dest = "C:\transform" 
$source = "D:\result" 
get-childitem $source - filter ".jpg" -recurse | Where-Object {$_.DirectoryName -match "HIGH" | ForEach-Object { Copy-Item $.fullname $dest} 

Répondre

0

$_.DirectoryName détient le nom du dossier, $_.Name le nom du fichier:

$dest = "C:\transform" 
$source = "D:\result" 
Get-ChildItem $source -Filter ".jpg" -Recurse | 
    ? { $_.BaseName -match "HIGH$" } | 
    % { Copy-Item $_.FullName $dest} 

Ou, comme l'a fait par @Walter Mitty, un simple:

Copy-Item -Path $source -Filter "*HIGH.jpg" -Destination $dest –Recurse 

(dans ce cas -Filter et -Include semblent se comporter de la même manière)

+0

devrait utiliser '' HIGH $ depuis l'OP a dit à la fin des fichiers. 'cmatch' pourrait aussi être une bonne idée pour imposer le cas .... mais c'est le plus probable. Le filtre pourrait aussi être '" * HIGH.jpg "' si ce n'est vraiment que des fichiers. Peut-être que l'op doit clarifier la question .... – Matt

+0

'$ _. Nom -match" HIGH $ "' ne fonctionnerait pas à cause de l'extension du fichier, mais '$ _. BaseName -match" HIGH $ "' serait: -). Merci, corrigé. Ça va mieux. – sodawillow

+0

... oui ... c'est ce que je voulais dire ..... Bonne pêche – Matt