def rollbackFunction(rollback){
bat """ 7z x D:\\APP_BACKUP\\${rollback}.zip -oD:\\APP\\ """
}
上面是我pipeline的一段函式,他會帶入一個壓縮的主檔案名稱
stage("測試"){
when {
expression { X == "RO" }
}
steps {
script{
rollbackFunction(rollback)
}
}
}
上面是pipeline的stage帶入上面那個函式
目的是要用7z解壓縮zip檔
7-Zip 22.01 (x64) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15
Scanning the drive for archives:
ERROR: �t�Χ䤣����w���ɮסC
D:\APP_BACKUP\3d9ce
System ERROR:
�t�Χ䤣����w���ɮסC
D:\jenkins\workspace\APP\TEST>.zip -oD:\APP\
'.zip' ���O�����Υ~���R�O�B�i���檺�{���Χ妸�ɡC
但從上面的錯誤似乎檔名被截成兩段導致無法解壓縮成功
有大大知道如何解嗎
根據您提供的錯誤訊息,似乎檔名有誤,所以導致解壓縮失敗。可以嘗試修改你的函式 rollbackFunction(),確認傳入的檔名 rollback 是否正確,並將其修改為合法的檔名。
可以參考以下程式碼:
def rollbackFunction(rollback){
def sanitizedRollback = rollback.replaceAll(/[^A-Za-z0-9_\\-\\.]/, '')
bat """ 7z x D:\\APP_BACKUP\\${sanitizedRollback}.zip -oD:\\APP\\ """
}
上述程式碼中,sanitizedRollback 是 rollback 經過處理後的合法檔名。使用 replaceAll() 將字串中的非法字元替換成空字串,避免因為非法字元導致解壓縮失敗。
應該是 charset 字元集不對。
你可以試試 7zip 用不一樣的字元集參數去壓縮。
通常應該用 UTF-8,可以先試試。不行再試其他。
https://sevenzip.osdn.jp/chm/cmdline/switches/charset.htm
7z -o "unzip/here" -x "zip/source.zip"
不確定有沒有用, 可以試看看用符號 ", 去包住 "檔案名稱"
關鍵在:
${rollback}
是她引入的最後一個字元, 造成斷行.
所以要去查 ${rollback} 是從哪裡代進來的?
她代入的參數裡面, 有沒有隱藏了換行的字元?
不然先不要用 ${rollback} 變數, 你就把檔名直接寫死在 Script 裡面, 看是否可以成功?