获取一个vsc的插件列表,并批量离线给另一个vsc安装
要批量下载 Visual Studio Code (VSC) 的 .vsix 插件文件,你可以使用以下几种方法:
获取本机vsc插件列表
首先,PowerShell中运行这个命令,查看本机vsc的插件列表,并将它保存到一个txt中
PS > code --list-extensions > extensions.txt
批量下载插件的vsix
写一个download_vsix.ps1的PowerShell脚本,自动化批量下载插件
# 需要安装的插件列表
$extensions = Get-Content -Path "./extensions.txt"
# 插件下载目录
$outputDir = "./download_vsix/"
$headers = @{
"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}
# 最大重试次数
$maxRetries = 1
# 每次重试之间的延迟时间(秒)
$retryDelay = 1
# 超时时间(秒)
$timeout = 15
foreach ($extension in $extensions) {
$outputFile = Join-Path $outputDir "$($extension).vsix"
# 如果文件已经存在,则跳过
if (Test-Path $outputFile) {
Write-Output "Skipped (already exists): $outputFile"
continue
}
$url = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/$($extension.Split('.')[0])/vsextensions/$($extension.Split('.')[1])/latest/vspackage"
$success = $false
for ($attempt = 1; $attempt -le $maxRetries; $attempt++) {
try {
# 设置超时和重试机制
$response = Invoke-WebRequest -Uri $url -OutFile $outputFile -Headers $headers -TimeoutSec $timeout
$success = $true
Write-Output "Downloaded: $outputFile"
break
} catch {
Write-Output "Attempt $attempt failed: $_"
Write-Output "[Failed] to download $extension after $maxRetries attempts."
if ($attempt -lt $maxRetries) {
Write-Output "Retrying in $retryDelay seconds..."
Start-Sleep -Seconds $retryDelay
}
}
}
}
但是这个代码有时候会下载失败,建议多运行几次。
运行几次之后,还是有一些插件下载不了,那么找到那些下载失败的插件,手动去vsc的插件市场下载vsix。
批量离线安装
然后在另一个电脑上批量安装
code --install-extension example.vsix
这样可以安装一个插件,将文件名通过ls -n列出并使用管道传入参数可以实现批量安装。
