#powershell #powershell-3.0 #powershell-4.0
Вопрос:
Я работал над сценарием Powershell последние 2 недели и не добился в этом большого прогресса.
Поэтому я пытаюсь скопировать файл с именем version.properties из корневого каталога моего проекта gradle в такие подкаталоги, как «src/main/ресурсы», «src/main/веб-приложение» и «src/main/приложение». Если я жестко закодирую путь, он работает, но я пытаюсь сделать его универсальным, найдя каталог и скопировав мой файл в этот каталог.
Я хочу, чтобы мой файл version.properties был скопирован в каталог «ресурсы»,»веб-приложение» и «приложение» после запуска сценария powershell.
Как я могу это сделать? Любые предложения приветствуются.
$SourceDirectory = "Projectrootversion.properties" $folders = gci $SourceDirectory -Recurse -Directory $jar = "src/main/resources" $ear = "src/main/application" $war = "src/main/webapp" foreach ($folder in Sfolders) { if (Test-Path $folder/$jar) { write-host "copying to $folder/$jar" Copy-Item-Path "{$SourceDirectory}version.properties" -Destination $folder/$jar -Recurse -Force } elseif (Test-Path $folder/$ear) { write-host "copying to $folder/$ear" Copy-Item-Path "{$SourceDirectory}version.properties" -Destination $folder/$ear -Recurse -Force } elseif (Test-Path $folder/$war) { write-host "copying to $folder/$war" Copy-Item-Path "{$SourceDirectory}version.properties" -Destination $folder/$war -Recurse -Force } else { Write-Host "No such path" } }
Комментарии:
1. Ну и что у вас есть на данный момент? Это просто случай запуска
gci
, чтобы найти этот файл, и три команды копирования после этого?2. Да, абсолютно верно. У меня есть gci, и после этого я запускаю цикл for для поиска этих папок, и если я нахожу эту папку, я пытаюсь скопировать этот файл в нужную папку.
3. Так в чем же проблема? Как выглядит ваш код? Поскольку у вас есть определенные папки, в которые вы хотите скопировать его, просто используя относительную часть в корне вашего поиска, или построение абсолютных путей из вашего корня должно работать?
4. Вот как выглядит мой код. Я добавил это в свой вопрос.
5. что-то не так с вашими
$Jar
$Ear
линиями ,$War
, и. они выглядят так, как будто вы собираетесь определить $Var … но у тебя нет никакого задания.
Ответ №1:
Предполагая, что это структура пути проекта:
#ProjectRoot #ProjectRootversion.properties lt;--- File #ProjectRootsrc #ProjectRootsrcmain #ProjectRootsrcmainapplication #ProjectRootsrcmainresources #ProjectRootsrcmainwebapp
Следующий сценарий сделает то, что вы ищете.
$SourceDirectory = "C:tempProjectroot" $DestinationDirectories = 'resources','application','webapp' foreach ($I in $DestinationDirectories) { $CurrentDest = "$SourceDirectorysrcmain$I" if (Test-Path -Path $CurrentDest) { Copy-Item -Path "$SourceDirectoryversion.properties" -Destination $CurrentDest } else { Write-Warning "Path not found: $CurrentDest" } }
Если я не понял структуру пути, пожалуйста, уточните, что это такое. Я также предполагаю, что «main» здесь является статическим ключевым словом, но если это не так, этот сценарий, возможно, потребуется скорректировать, чтобы отразить это.
Комментарии:
1. Это помогает. Спасибо