Cópia de diretórios ao seu nome corresponde -Como arquivos txt
-
26-12-2019 - |
Pergunta
Eu estou tentando copiar um monte de diretórios.Eu tenho arquivos de texto que tem um nome parecido, e que eu preciso para coincidir com os diretórios para os arquivos de texto para determinar quais diretórios para copiar.
Isso é o que eu fiz e eu não consigo descobrir como corrigi-lo.Eu estou andando em círculos.
$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Include *.txt
$source = "..\..\..\Images\" | ?{ $_.PSIsContainer } | Where-Object { $_.Name -Like "*$txtfiles*" } | Copy-Item $destination
Um exemplo de um arquivo txt: 1e03655b-0aac-48b2-82f3-75942084af7a.txt
e a pasta: name.1e03655b-0aac-48b2-82f3-75942084af7a
Então eu preciso encontrar as pastas que correspondem a arquivos txt e copiar a pasta para o diretório do arquivo txt.
Obrigado
Solução
Você deseja expandir o BaseName propriedades desses arquivos de texto (para cortar .txt parte) e tem uma matriz de seqüências de caracteres, tais como:
1e03655b-0aac-48b2-82f3-75942084af7a
1e03655b-0aac-48b2-82f3-75942084af7b
1e03655b-0aac-48b2-82f3-75942084af8g
1e03655b-0aac-48b2-82f3-75942084afba
Em seguida, o seu $source =
linha precisa puxar uma listagem de diretório e não apenas enviar uma cadeia de caracteres para o pipeline e, em seguida, eu gostaria de sugerir a correspondência de nomes de diretório com um exelente jogo, e verificar para ver se esse jogo é -in $txtfiles
.
$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Filter *.txt | Select -ExpandProperty BaseName
$source = "..\..\..\Images\"
GCI $source -Directory | ?{ $_.Name -match "(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})$" } | %{If($Matches[1] -in $txtfiles){Copy-Item $_.FullName $destination}}