windows cmd拉取linux資料夾下的檔案,並解壓

_Phoenix發表於2024-05-21

前言:nginx靜態檔案從linux資料夾下拉取,然後放到windows下,並且解壓

需要安裝 putty,用pscp命令

del-pull.bat檔案,負責刪除本地資料夾下所有檔案,並且拉取資料

@echo off
setlocal

set FOLDER_PATH=C:\Users\admin\Desktop\yaya_nginx\web\

echo Deleting files in folder...
rmdir /s /q %FOLDER_PATH%

echo -----Files deleted successfully---
echo  password:---------yaya@197-----------

pscp -r root@8.8.11.112:"/root/home/web" "C:\Users\admin\Desktop\yaya_nginx"

endlocal

powershell指令碼檔案:負責解壓檔案

unzip.ps1

# 設定源目錄路徑  
$sourceDir = "C:\Users\admin\Desktop\yaya_nginx\web"  
  
# 獲取源目錄下的所有子目錄  
$subDirs = Get-ChildItem -Path $sourceDir -Directory  
  
# 遍歷每個子目錄  
foreach ($dir in $subDirs) {  
    # 構造dist.zip檔案的完整路徑  
    $zipPath = Join-Path -Path $dir.FullName -ChildPath "dist.zip"  
      
    # 如果dist.zip檔案存在  
    if (Test-Path -Path $zipPath) {  
        # 構造dist目錄的完整路徑  
        $distPath = Join-Path -Path $dir.FullName -ChildPath "dist"  
          
        # 如果dist目錄不存在,則建立它  
        if (!(Test-Path -Path $distPath -PathType Container)) {  
            New-Item -ItemType Directory -Path $distPath | Out-Null  
        }  
          
        # 使用PowerShell的Expand-Archive命令解壓檔案  
        Expand-Archive -Path $zipPath -DestinationPath $distPath -Force  
    } else {  
        # 如果dist.zip檔案不存在,則輸出警告資訊  
        Write-Warning "dist.zip not found in $($dir.FullName)"  
    }  
}

如果都用powershell指令碼,完整命令:

# 設定資料夾路徑
$FOLDER_PATH = "C:\Users\admin\Desktop\yaya_nginx\web\"

# 輸出刪除資料夾中的檔案資訊
Write-Host "--------------------------------Deleting files in folder...-------------------------------------"

# 嘗試刪除資料夾及其內容(PowerShell中沒有rmdir命令,使用Remove-Item)
# 注意:Remove-Item -Recurse -Force 會刪除資料夾及其所有內容,請小心使用
# 如果你只想清空資料夾而不刪除它,請使用不同的方法
try {
    Remove-Item -Recurse -Force $FOLDER_PATH -ErrorAction Stop
    Write-Host "-----Files deleted successfully---"
}
catch {
    Write-Host "Error deleting folder: $_"
}

Write-Host "-------------------------pull  linux files password: yaya@1972 ------------------------------------------"

# 設定父資料夾路徑(如果需要刪除web資料夾後再使用父資料夾路徑)
$FOLDER_PATH_PARENT = Split-Path -Parent $FOLDER_PATH

# 注意:這裡我們假設不刪除web資料夾,所以直接使用$FOLDER_PATH

# 使用pscp(PuTTY Secure Copy)命令從遠端伺服器複製資料夾
# 注意:PowerShell沒有內建的pscp命令,你需要確保pscp.exe在你的PATH中,或者指定完整路徑
try {
    # PowerShell中使用&來執行外部命令
    # 使用$FOLDER_PATH(如果web資料夾存在並且你想複製到這裡)
    & pscp -r root@8.8.11.112:"/root/home/web" $FOLDER_PATH
    Write-Host "Files copied from remote server successfully"
}
catch {
    Write-Host "Error copying files from remote server: $_"
}

Write-Host "-------------------------pull  linux files end ------------------------------------------"

Write-Host "-------------------------files unzip ------------------------------------------"
# 設定源目錄路徑
$sourceDir = $FOLDER_PATH

# 獲取源目錄下的所有子目錄
$subDirs = Get-ChildItem -Path $sourceDir -Directory

# 遍歷每個子目錄
foreach ($dir in $subDirs) {
    # 構造dist.zip檔案的完整路徑
    $zipPath = Join-Path -Path $dir.FullName -ChildPath "dist.zip"

    # 如果dist.zip檔案存在
    if (Test-Path -Path $zipPath) {
        # 構造dist目錄的完整路徑
        $distPath = Join-Path -Path $dir.FullName -ChildPath "dist"

        # 如果dist目錄不存在,則建立它
        if (!(Test-Path -Path $distPath -PathType Container)) {
            New-Item -ItemType Directory -Path $distPath | Out-Null
        }

        # 使用PowerShell的Expand-Archive命令解壓檔案
        Expand-Archive -Path $zipPath -DestinationPath $distPath -Force
    } else {
        # 如果dist.zip檔案不存在,則輸出警告資訊
        Write-Warning "dist.zip not found in $($dir.FullName)"
    }
}
Write-Host "-------------------------files unzip  end ------------------------------------------"

相關文章