發表文章

批次rename

將 0_1.png 重新命名為 001.png  和  將 0_11.png 重新命名為 011.png Get-ChildItem "*_*.png" | ForEach-Object { $parts = $_ .Name.Split( '_' ) if ( $parts .Length -eq 2) { $prefix = $parts [0] $number = $parts [1].Replace( ".png" , "" ) $newName = "{0}{1:D2}.png" -f $prefix , [int] $number Rename-Item -Path $_ .FullName -NewName $newName } } 指令解說: $parts = $_.Name.Split('_') :將檔名  0_1.png  用  _  分割成  0  和  1.png  兩部分。 $number = $parts[1].Replace(".png", "") :取得數字部分,並移除副檔名。 "{0}{1:D2}.png" -f $prefix, [int]$number :這是最關鍵的一步。 -f  是 PowerShell 的格式化運算子。 {0}  代表第一個變數 ( $prefix )。 {1:D2}  代表第二個變數 ( [int]$number ), D2  的意思是以 整數 (Decimal)  格式輸出,且固定為  2 位數 (2-digits) ,如果不足,左邊會自動補 0。 這行指令會將  0  和  1  組合並格式化成  001.png ,將  0  和  11  組合格式化成  011.png 。 使用 PowerShell (Windows 內建,功能最強) PowerShell 是 Windows 內建的現代化命令列工具,處理這類任務非常靈活且安全。 操作步驟:...

_ 占位符

 你問到了一個在現代 JavaScript 中非常常見且實用的語法習慣! 簡單的答案是: _ (底線) 在這裡是一個「佔位符」,用來告訴閱讀程式碼的人(以及程式碼檢查工具):「我在這裡需要一個參數,但我完全不會用到它,所以我就忽略它了。」 詳細解釋 讓我們來分解 Array.from({ length: 24 }, (_, i) => { ... }) 這段程式碼: Array.from(arrayLike, mapFn) : Array.from 是一個靜態方法,可以用來從一個「類陣列物件」(array-like object) 或「可迭代物件」(iterable object) 創建一個新的、真正的陣列。 它接受第二個可選參數 mapFn ,這是一個映射函式 (map function)。 Array.from 會對創建的新陣列中的 每一個元素 都執行一次這個函式,並用函式的回傳值來替換該元素。 { length: 24 } : 這是一個「類陣列物件」。它不是一個真正的陣列,但它有一個 length 屬性,所以 Array.from 知道要創建一個包含 24 個元素的陣列。 在這一刻,這個新創建的陣列是 [undefined, undefined, ..., undefined] (總共 24 個)。 (_, i) => ${String(i).padStart(2, '0')}:00`` : 這就是那個 mapFn 映射函式。 Array.from 在遍歷那個長度為 24 的新陣列時,會為每個位置呼叫這個函式。 這個映射函式會接收 兩個參數 : 第一個參數 :是陣列中 當前元素的值 。因為我們的陣列是 [undefined, undefined, ...] ,所以這個參數 永遠都是 undefined 。 第二個參數 :是陣列中 當前元素的索引 (index),從 0 到 23 。 這就是 _ 出場的地方: 我們在程式碼邏輯中, 只需要 用到第二個參數 i (索引),來產生 '00:00' , '01:00' , '02:00' ... 這樣的字串。 我們 完全不需要 用到第一個參數(那個永遠是 undefined 的值)。 為了讓程式碼更清晰,我們不使用像...