Я совершенно новичок в powershell, и меня спросили, могу ли я попробовать написать скрипт для копирования файлов конфигурации файлов из одной папки в новую и переименовать их, удалив определенную часть имени.
Пока я получил его, чтобы скопировать файлы, подпапки и поместить все файлы в правильные подпапки в новом месте.Но у меня возникают проблемы с получением кода для переименования файлов.
Я либо получаю сообщение об ошибке, указывающее, что путь пуст, либо он заменит файл в последней папке переименованной версией файла из первой папки, затем выдает ошибку, говоря, что исходный файл не существует.
Set-Variable -Name sourcedir -Value "C:\Test"
Set-Variable -Name targetdir -Value "C:\TestCopy"
Set-Variable -Name oldname -Value "_Original"
Set-Variable -Name newname -Value "_copy"
Get-ChildItem $sourcedir -filter "*.txt" -recurse |
foreach{
$targetFile = $targetdir + $_.FullName.SubString($sourceDir.Length);
Copy-Item $_.FullName -destination $targetFile
}
Get-ChildItem -Path $targetdir -filter "*.txt" -recurse |
foreach{
$targetFile = $targetdir + $_.FullName.SubString($targeDir.Length);
Rename-Item $targetFile.FullName -NewName ($_.name -replace $oldname, $newname)
}
Код выше использует мой тестовый пример.У меня есть каталог с тремя папками, и у каждой папки есть текстовый файл.
Для чего нужно скопировать структуру каталогов, вставить ее в новое место, а затем переименовать часть файлов.