Использование тестового пути в элементе копирования в PowerShell?

В настоящее время я копирую файл (из переменной $_.'File Path', которая устанавливается через столбец в таблице SQL) в другое место папки ($Path).

Переменная $_.'File Path' включает расположение папки, имя файла, но не расширение. Я бы хотел установить расширение с помощью тестового пути, но мне это не удается.

Например. проверьте, имеет ли $_.'File Path' расширение .PDF, если это правда, скопируйте. Если нет, проверьте, имеет ли $_.'File Path' расширение .doc, если это правда, скопируйте. Если нет, проверьте, имеет ли $_.'File Path' расширение .tif …… ..

    Echo "Copying document and Prepending Document Date"
     $copy = [IO.FileInfo]$_.'File Path'
     $copy | Copy-Item -Destination "$path\$($_.'Date')_$($copy.Name)"

person Fler    schedule 13.11.2019    source источник
comment
вы пробовали Get-Item -Path $YourPath.*? если ваш путь без расширения уникален, то подстановочный знак будет принимать полное имя файла.   -  person Lee_Dailey    schedule 13.11.2019
comment
Не могли бы вы сделать $copy.Extension? Затем в операторе if: if($copy.Extension -eq ".PDF") { #Copy Item}   -  person techguy1029    schedule 13.11.2019


Ответы (1)


Попробуйте следующее:

$extensions = '.pdf', '.doc', '.tif' # add additional extensions as needed

# Create paths with prefix $_.'File-Path' with all the extensions.
# E.g., if $_.'File-Path' contains 'c:\path\to\document', this
# creates the following array:
#   'c:\path\to\document.pdf', 'c:\path\to\document.doc', 'c:\path\to\document.tif'
$filePathsToTest = $extensions -replace '^', [regex]::Escape($_.'File-Path')

# ...

# See if any of the constructed file paths exist.
if ($existingFiles = Get-Item -ErrorAction Ignore $filePathsToTest) { 
  Copy-Item -LiteralPath $existingFiles `
            -Destination "$path\$($_.'Date')_$(Split-Path -Leaf $_.'File-Path')"
}
person mklement0    schedule 13.11.2019
comment
Это создает папки, как и раньше, но не копирует файл. - person Fler; 14.11.2019
comment
@LFuller: Я не уверен, что вы говорите в комментарии, но я перечитал вопрос и существенно изменил ответ - пожалуйста, посмотрите еще раз. - person mklement0; 14.11.2019