O método do item de cópia do PowerShell falha

1

Estou tentando usar o PowerShell (v.1) para copiar apenas os arquivos que correspondem a um padrão. A convenção de nomenclatura de arquivos é:

Daily_Reviews[0001-0871].journal
Daily_Reviews[1002-9887].journal
[...]

Quando eu executo, o método "Copy-Item" reclama:

Os parâmetros dinâmicos para o cmdlet não podem ser recuperados. O padrão de caractere curinga especificado não é válido: Daily_Reviews [0001-0871] .journal
+ Copy-Item < < < < $ sourcefile $ destination

É por causa do "[" e "]" nos nomes dos arquivos. Quando eu removo os colchetes esquerdo e direito, ele funciona como esperado. Mas parece que o PowerShell 1 não tem o sinalizador -LiteralPath, portanto, há outra maneira de fazer com que o Copy-Item funcione no PowerShell 1 com nomes de arquivo que contêm colchetes?

$source = "C:\Users\Tom\"
$destination ="C:\Users\Tom\Processed\"

if(-not(Test-Path $destination)){mkdir $destination | out-null}


ForEach ($sourcefile In $(Get-ChildItem $source | Where-Object { $_.Name -match "Daily_Reviews\[\d\d\d\d-\d\d\d\d\].journal" }))
{

  Copy-Item $sourcefile $destination
 }
    
por Slinky 10.04.2013 / 18:04

1 resposta

1

Bom, depois de pesquisar isso, encontrei uma solução alternativa:

$src = [Management.Automation.WildcardPattern]::Escape($sourcefile)
Copy-Item  $src $destination
    
por 10.04.2013 / 18:45