[{"data":1,"prerenderedAt":1196},["ShallowReactive",2],{"\u002Fpost\u002Fbatch-rename-using-javascript":3},{"id":4,"title":5,"body":6,"date":1179,"description":12,"extension":1180,"hidden":1181,"image":1182,"meta":1183,"navigation":71,"path":1184,"seo":1185,"sitemap":1186,"stem":1189,"subtitle":1190,"tags":1191,"__hash__":1195},"posts\u002Fpost\u002Fbatch-rename-using-javascript.md","用 javascript 來批次更改檔案名稱",{"type":7,"value":8,"toc":1177},"minimark",[9,13,16,19,22,25,28,31,38,41,44,47,1173],[10,11,12],"p",{},"近期工作上遇到一個需要更改大量檔案名稱的需求",[10,14,15],{},"原本的檔名是這樣的",[10,17,18],{},"AAA-VV-00001_jiosajdwqoie.png",[10,20,21],{},"AAA-VV-00003_w29018209312.png",[10,23,24],{},"ABB-VV-00012_12390812039.png",[10,26,27],{},".....以下省略......",[10,29,30],{},"想要的需求是把 \"_\" 的文字移除",[10,32,33],{},[34,35],"img",{"alt":36,"src":37},"files name example","\u002Fimages\u002Fpost\u002Fbatch-rename-files\u002Fg1.webp",[10,39,40],{},"因為 AAA-VV 後方的數字也不是連貫的，變成運用 mac 內建的 rename 也沒辦法。",[10,42,43],{},"要是以前的我肯定是一個一個改= =",[10,45,46],{},"機智如我當然不會寫 Bash ，所以還是運用我微弱的前端知識，也就是 javascript 來解決。",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-js shiki shiki-themes light-plus tokyo-night","\u002F\u002F 需要本地有安裝 node.js\n\nconst fs = require('fs')\nconst path = require('path')\nconst FolderName = '.\u002F' \u002F\u002F 檔案位置，若檔案位置跟這支 js 檔案在不同位置需要更改此位置 ex: \".\u002FmyFolder\"\n\n\u002F**\n * 更改檔案名稱\n * @param {string} oldPath 原本名稱\n * @param {string} newPath 新名稱\n * @param {Function} callback 返回訊息\n *\u002F\nfunction renameFile(oldPath, newPath, callback) {\n  fs.rename(oldPath, newPath, (err) => {\n    if (err) {\n      console.error(`Error renaming file: ${err}`)\n      callback(err)\n    } else {\n      console.log(`File renamed successfully from ${oldPath} to ${newPath}`)\n      callback(null)\n    }\n  })\n}\n\n\u002F**\n * 讀資料夾內部的檔案\n * @param {string} folderPath 資料夾名稱\n * @param {Function} callback\n *\u002F\nfunction readFolder(folderPath, callback) {\n  fs.readdir(folderPath, (err, files) => {\n    if (err) {\n      console.error(`Error reading folder: ${err}`)\n      callback(err, null)\n    } else {\n      console.log(`Files in ${folderPath}:`)\n      \u002F\u002F 將所有檔案名稱 for loop 讀出來\n      files.forEach((fileName) => {\n        \u002F\u002F 判斷如果是 .js 就不動作\n        const jsFileRegex = \u002F^.*\\.js$\u002F\n        if (jsFileRegex.test(fileName)) return\n\n        \u002F\u002F 舊檔名\n        const oldNmae = path.join(FolderName, fileName)\n\n        \u002F\u002F 這邊是調整新檔名的規則，依自己需求調整\n        \u002F\u002F 也可以自己寫 regex 會更準確\n        const ext = '.png'\n        const name = fileName.split('_')[0] \u002F\u002F 新檔名\n        const newName = path.join(\n          FolderName,\n          name.includes(ext) ? name : name + ext\n        )\n\n        renameFile(oldNmae, newName, (err) => {\n          if (err) {\n            console.error('File renaming failed.')\n          } else {\n            console.log('File renaming successful.')\n          }\n        })\n      })\n      callback(null, files)\n    }\n  })\n}\n\nreadFolder(FolderName, (err) => {\n  if (err) {\n    console.error('File renaming failed.')\n  } else {\n    console.log('File renaming successful.')\n  }\n})\n","js","",[55,56,57,66,73,109,132,153,158,164,170,198,217,237,243,274,311,325,356,368,379,416,429,435,441,447,452,457,463,482,498,503,524,555,566,592,608,617,646,652,675,681,719,746,751,757,786,791,797,803,821,860,879,888,923,929,934,961,973,994,1004,1024,1030,1036,1042,1057,1062,1067,1072,1077,1100,1112,1132,1142,1161,1167],"code",{"__ignoreMap":53},[58,59,62],"span",{"class":60,"line":61},"line",1,[58,63,65],{"class":64},"shM36","\u002F\u002F 需要本地有安裝 node.js\n",[58,67,69],{"class":60,"line":68},2,[58,70,72],{"emptyLinePlaceholder":71},true,"\n",[58,74,76,80,84,88,92,96,100,104,106],{"class":60,"line":75},3,[58,77,79],{"class":78},"sucPa","const",[58,81,83],{"class":82},"sq2Xa"," fs",[58,85,87],{"class":86},"s6v6z"," =",[58,89,91],{"class":90},"sjNAT"," require",[58,93,95],{"class":94},"sNwUV","(",[58,97,99],{"class":98},"sq7Q2","'",[58,101,103],{"class":102},"s58z3","fs",[58,105,99],{"class":98},[58,107,108],{"class":94},")\n",[58,110,112,114,117,119,121,123,125,128,130],{"class":60,"line":111},4,[58,113,79],{"class":78},[58,115,116],{"class":82}," path",[58,118,87],{"class":86},[58,120,91],{"class":90},[58,122,95],{"class":94},[58,124,99],{"class":98},[58,126,127],{"class":102},"path",[58,129,99],{"class":98},[58,131,108],{"class":94},[58,133,135,137,140,142,145,148,150],{"class":60,"line":134},5,[58,136,79],{"class":78},[58,138,139],{"class":82}," FolderName",[58,141,87],{"class":86},[58,143,144],{"class":98}," '",[58,146,147],{"class":102},".\u002F",[58,149,99],{"class":98},[58,151,152],{"class":64}," \u002F\u002F 檔案位置，若檔案位置跟這支 js 檔案在不同位置需要更改此位置 ex: \".\u002FmyFolder\"\n",[58,154,156],{"class":60,"line":155},6,[58,157,72],{"emptyLinePlaceholder":71},[58,159,161],{"class":60,"line":160},7,[58,162,163],{"class":64},"\u002F**\n",[58,165,167],{"class":60,"line":166},8,[58,168,169],{"class":64}," * 更改檔案名稱\n",[58,171,173,176,180,184,188,191,195],{"class":60,"line":172},9,[58,174,175],{"class":64}," * ",[58,177,179],{"class":178},"se7cl","@param",[58,181,183],{"class":182},"sHKXH"," {",[58,185,187],{"class":186},"s6uJR","string",[58,189,190],{"class":182},"}",[58,192,194],{"class":193},"sWJqL"," oldPath",[58,196,197],{"class":64}," 原本名稱\n",[58,199,201,203,205,207,209,211,214],{"class":60,"line":200},10,[58,202,175],{"class":64},[58,204,179],{"class":178},[58,206,183],{"class":182},[58,208,187],{"class":186},[58,210,190],{"class":182},[58,212,213],{"class":193}," newPath",[58,215,216],{"class":64}," 新名稱\n",[58,218,220,222,224,226,229,231,234],{"class":60,"line":219},11,[58,221,175],{"class":64},[58,223,179],{"class":178},[58,225,183],{"class":182},[58,227,228],{"class":186},"Function",[58,230,190],{"class":182},[58,232,233],{"class":193}," callback",[58,235,236],{"class":64}," 返回訊息\n",[58,238,240],{"class":60,"line":239},12,[58,241,242],{"class":64}," *\u002F\n",[58,244,246,250,253,255,259,262,264,266,268,271],{"class":60,"line":245},13,[58,247,249],{"class":248},"s5MyL","function",[58,251,252],{"class":90}," renameFile",[58,254,95],{"class":94},[58,256,258],{"class":257},"s_ePm","oldPath",[58,260,261],{"class":86},",",[58,263,213],{"class":257},[58,265,261],{"class":86},[58,267,233],{"class":257},[58,269,270],{"class":94},")",[58,272,273],{"class":94}," {\n",[58,275,277,281,284,287,289,291,293,295,297,300,303,306,309],{"class":60,"line":276},14,[58,278,280],{"class":279},"sJUHq","  fs",[58,282,283],{"class":86},".",[58,285,286],{"class":90},"rename",[58,288,95],{"class":94},[58,290,258],{"class":279},[58,292,261],{"class":86},[58,294,213],{"class":279},[58,296,261],{"class":86},[58,298,299],{"class":94}," (",[58,301,302],{"class":257},"err",[58,304,305],{"class":94},") ",[58,307,308],{"class":248},"=>",[58,310,273],{"class":94},[58,312,314,318,320,322],{"class":60,"line":313},15,[58,315,317],{"class":316},"swp_B","    if",[58,319,299],{"class":94},[58,321,302],{"class":279},[58,323,324],{"class":94},") {\n",[58,326,328,331,333,336,338,341,344,348,350,352,354],{"class":60,"line":327},16,[58,329,330],{"class":279},"      console",[58,332,283],{"class":86},[58,334,335],{"class":90},"error",[58,337,95],{"class":94},[58,339,340],{"class":98},"`",[58,342,343],{"class":102},"Error renaming file: ",[58,345,347],{"class":346},"sgi5Y","${",[58,349,302],{"class":279},[58,351,190],{"class":346},[58,353,340],{"class":98},[58,355,108],{"class":94},[58,357,359,362,364,366],{"class":60,"line":358},17,[58,360,361],{"class":90},"      callback",[58,363,95],{"class":94},[58,365,302],{"class":279},[58,367,108],{"class":94},[58,369,371,374,377],{"class":60,"line":370},18,[58,372,373],{"class":94},"    } ",[58,375,376],{"class":316},"else",[58,378,273],{"class":94},[58,380,382,384,386,389,391,393,396,398,400,402,405,407,410,412,414],{"class":60,"line":381},19,[58,383,330],{"class":279},[58,385,283],{"class":86},[58,387,388],{"class":90},"log",[58,390,95],{"class":94},[58,392,340],{"class":98},[58,394,395],{"class":102},"File renamed successfully from ",[58,397,347],{"class":346},[58,399,258],{"class":279},[58,401,190],{"class":346},[58,403,404],{"class":102}," to ",[58,406,347],{"class":346},[58,408,409],{"class":279},"newPath",[58,411,190],{"class":346},[58,413,340],{"class":98},[58,415,108],{"class":94},[58,417,419,421,423,427],{"class":60,"line":418},20,[58,420,361],{"class":90},[58,422,95],{"class":94},[58,424,426],{"class":425},"s0ObY","null",[58,428,108],{"class":94},[58,430,432],{"class":60,"line":431},21,[58,433,434],{"class":94},"    }\n",[58,436,438],{"class":60,"line":437},22,[58,439,440],{"class":94},"  })\n",[58,442,444],{"class":60,"line":443},23,[58,445,446],{"class":94},"}\n",[58,448,450],{"class":60,"line":449},24,[58,451,72],{"emptyLinePlaceholder":71},[58,453,455],{"class":60,"line":454},25,[58,456,163],{"class":64},[58,458,460],{"class":60,"line":459},26,[58,461,462],{"class":64}," * 讀資料夾內部的檔案\n",[58,464,466,468,470,472,474,476,479],{"class":60,"line":465},27,[58,467,175],{"class":64},[58,469,179],{"class":178},[58,471,183],{"class":182},[58,473,187],{"class":186},[58,475,190],{"class":182},[58,477,478],{"class":193}," folderPath",[58,480,481],{"class":64}," 資料夾名稱\n",[58,483,485,487,489,491,493,495],{"class":60,"line":484},28,[58,486,175],{"class":64},[58,488,179],{"class":178},[58,490,183],{"class":182},[58,492,228],{"class":186},[58,494,190],{"class":182},[58,496,497],{"class":193}," callback\n",[58,499,501],{"class":60,"line":500},29,[58,502,242],{"class":64},[58,504,506,508,511,513,516,518,520,522],{"class":60,"line":505},30,[58,507,249],{"class":248},[58,509,510],{"class":90}," readFolder",[58,512,95],{"class":94},[58,514,515],{"class":257},"folderPath",[58,517,261],{"class":86},[58,519,233],{"class":257},[58,521,270],{"class":94},[58,523,273],{"class":94},[58,525,527,529,531,534,536,538,540,542,544,546,549,551,553],{"class":60,"line":526},31,[58,528,280],{"class":279},[58,530,283],{"class":86},[58,532,533],{"class":90},"readdir",[58,535,95],{"class":94},[58,537,515],{"class":279},[58,539,261],{"class":86},[58,541,299],{"class":94},[58,543,302],{"class":257},[58,545,261],{"class":86},[58,547,548],{"class":257}," files",[58,550,305],{"class":94},[58,552,308],{"class":248},[58,554,273],{"class":94},[58,556,558,560,562,564],{"class":60,"line":557},32,[58,559,317],{"class":316},[58,561,299],{"class":94},[58,563,302],{"class":279},[58,565,324],{"class":94},[58,567,569,571,573,575,577,579,582,584,586,588,590],{"class":60,"line":568},33,[58,570,330],{"class":279},[58,572,283],{"class":86},[58,574,335],{"class":90},[58,576,95],{"class":94},[58,578,340],{"class":98},[58,580,581],{"class":102},"Error reading folder: ",[58,583,347],{"class":346},[58,585,302],{"class":279},[58,587,190],{"class":346},[58,589,340],{"class":98},[58,591,108],{"class":94},[58,593,595,597,599,601,603,606],{"class":60,"line":594},34,[58,596,361],{"class":90},[58,598,95],{"class":94},[58,600,302],{"class":279},[58,602,261],{"class":86},[58,604,605],{"class":425}," null",[58,607,108],{"class":94},[58,609,611,613,615],{"class":60,"line":610},35,[58,612,373],{"class":94},[58,614,376],{"class":316},[58,616,273],{"class":94},[58,618,620,622,624,626,628,630,633,635,637,639,642,644],{"class":60,"line":619},36,[58,621,330],{"class":279},[58,623,283],{"class":86},[58,625,388],{"class":90},[58,627,95],{"class":94},[58,629,340],{"class":98},[58,631,632],{"class":102},"Files in ",[58,634,347],{"class":346},[58,636,515],{"class":279},[58,638,190],{"class":346},[58,640,641],{"class":102},":",[58,643,340],{"class":98},[58,645,108],{"class":94},[58,647,649],{"class":60,"line":648},37,[58,650,651],{"class":64},"      \u002F\u002F 將所有檔案名稱 for loop 讀出來\n",[58,653,655,658,660,663,666,669,671,673],{"class":60,"line":654},38,[58,656,657],{"class":279},"      files",[58,659,283],{"class":86},[58,661,662],{"class":90},"forEach",[58,664,665],{"class":94},"((",[58,667,668],{"class":257},"fileName",[58,670,305],{"class":94},[58,672,308],{"class":248},[58,674,273],{"class":94},[58,676,678],{"class":60,"line":677},39,[58,679,680],{"class":64},"        \u002F\u002F 判斷如果是 .js 就不動作\n",[58,682,684,687,690,692,696,700,703,706,710,713,716],{"class":60,"line":683},40,[58,685,686],{"class":78},"        const",[58,688,689],{"class":82}," jsFileRegex",[58,691,87],{"class":86},[58,693,695],{"class":694},"sT5Vz"," \u002F",[58,697,699],{"class":698},"sfdgG","^",[58,701,283],{"class":702},"sfNUN",[58,704,705],{"class":86},"*",[58,707,709],{"class":708},"s0zpT","\\.",[58,711,52],{"class":712},"sgNCg",[58,714,715],{"class":698},"$",[58,717,718],{"class":694},"\u002F\n",[58,720,722,725,727,730,732,735,737,739,742],{"class":60,"line":721},41,[58,723,724],{"class":316},"        if",[58,726,299],{"class":94},[58,728,729],{"class":279},"jsFileRegex",[58,731,283],{"class":86},[58,733,734],{"class":90},"test",[58,736,95],{"class":94},[58,738,668],{"class":279},[58,740,741],{"class":94},")) ",[58,743,745],{"class":744},"svvEX","return\n",[58,747,749],{"class":60,"line":748},42,[58,750,72],{"emptyLinePlaceholder":71},[58,752,754],{"class":60,"line":753},43,[58,755,756],{"class":64},"        \u002F\u002F 舊檔名\n",[58,758,760,762,765,767,769,771,774,776,779,781,784],{"class":60,"line":759},44,[58,761,686],{"class":78},[58,763,764],{"class":82}," oldNmae",[58,766,87],{"class":86},[58,768,116],{"class":279},[58,770,283],{"class":86},[58,772,773],{"class":90},"join",[58,775,95],{"class":94},[58,777,778],{"class":279},"FolderName",[58,780,261],{"class":86},[58,782,783],{"class":279}," fileName",[58,785,108],{"class":94},[58,787,789],{"class":60,"line":788},45,[58,790,72],{"emptyLinePlaceholder":71},[58,792,794],{"class":60,"line":793},46,[58,795,796],{"class":64},"        \u002F\u002F 這邊是調整新檔名的規則，依自己需求調整\n",[58,798,800],{"class":60,"line":799},47,[58,801,802],{"class":64},"        \u002F\u002F 也可以自己寫 regex 會更準確\n",[58,804,806,808,811,813,815,818],{"class":60,"line":805},48,[58,807,686],{"class":78},[58,809,810],{"class":82}," ext",[58,812,87],{"class":86},[58,814,144],{"class":98},[58,816,817],{"class":102},".png",[58,819,820],{"class":98},"'\n",[58,822,824,826,829,831,833,835,838,840,842,845,847,850,854,857],{"class":60,"line":823},49,[58,825,686],{"class":78},[58,827,828],{"class":82}," name",[58,830,87],{"class":86},[58,832,783],{"class":279},[58,834,283],{"class":86},[58,836,837],{"class":90},"split",[58,839,95],{"class":94},[58,841,99],{"class":98},[58,843,844],{"class":102},"_",[58,846,99],{"class":98},[58,848,849],{"class":94},")[",[58,851,853],{"class":852},"sjYsg","0",[58,855,856],{"class":94},"] ",[58,858,859],{"class":64},"\u002F\u002F 新檔名\n",[58,861,863,865,868,870,872,874,876],{"class":60,"line":862},50,[58,864,686],{"class":78},[58,866,867],{"class":82}," newName",[58,869,87],{"class":86},[58,871,116],{"class":279},[58,873,283],{"class":86},[58,875,773],{"class":90},[58,877,878],{"class":94},"(\n",[58,880,882,885],{"class":60,"line":881},51,[58,883,884],{"class":279},"          FolderName",[58,886,887],{"class":86},",\n",[58,889,891,894,896,899,901,904,906,910,912,915,917,920],{"class":60,"line":890},52,[58,892,893],{"class":279},"          name",[58,895,283],{"class":86},[58,897,898],{"class":90},"includes",[58,900,95],{"class":94},[58,902,903],{"class":279},"ext",[58,905,305],{"class":94},[58,907,909],{"class":908},"sny2E","?",[58,911,828],{"class":279},[58,913,914],{"class":908}," :",[58,916,828],{"class":279},[58,918,919],{"class":86}," +",[58,921,922],{"class":279}," ext\n",[58,924,926],{"class":60,"line":925},53,[58,927,928],{"class":94},"        )\n",[58,930,932],{"class":60,"line":931},54,[58,933,72],{"emptyLinePlaceholder":71},[58,935,937,940,942,945,947,949,951,953,955,957,959],{"class":60,"line":936},55,[58,938,939],{"class":90},"        renameFile",[58,941,95],{"class":94},[58,943,944],{"class":279},"oldNmae",[58,946,261],{"class":86},[58,948,867],{"class":279},[58,950,261],{"class":86},[58,952,299],{"class":94},[58,954,302],{"class":257},[58,956,305],{"class":94},[58,958,308],{"class":248},[58,960,273],{"class":94},[58,962,964,967,969,971],{"class":60,"line":963},56,[58,965,966],{"class":316},"          if",[58,968,299],{"class":94},[58,970,302],{"class":279},[58,972,324],{"class":94},[58,974,976,979,981,983,985,987,990,992],{"class":60,"line":975},57,[58,977,978],{"class":279},"            console",[58,980,283],{"class":86},[58,982,335],{"class":90},[58,984,95],{"class":94},[58,986,99],{"class":98},[58,988,989],{"class":102},"File renaming failed.",[58,991,99],{"class":98},[58,993,108],{"class":94},[58,995,997,1000,1002],{"class":60,"line":996},58,[58,998,999],{"class":94},"          } ",[58,1001,376],{"class":316},[58,1003,273],{"class":94},[58,1005,1007,1009,1011,1013,1015,1017,1020,1022],{"class":60,"line":1006},59,[58,1008,978],{"class":279},[58,1010,283],{"class":86},[58,1012,388],{"class":90},[58,1014,95],{"class":94},[58,1016,99],{"class":98},[58,1018,1019],{"class":102},"File renaming successful.",[58,1021,99],{"class":98},[58,1023,108],{"class":94},[58,1025,1027],{"class":60,"line":1026},60,[58,1028,1029],{"class":94},"          }\n",[58,1031,1033],{"class":60,"line":1032},61,[58,1034,1035],{"class":94},"        })\n",[58,1037,1039],{"class":60,"line":1038},62,[58,1040,1041],{"class":94},"      })\n",[58,1043,1045,1047,1049,1051,1053,1055],{"class":60,"line":1044},63,[58,1046,361],{"class":90},[58,1048,95],{"class":94},[58,1050,426],{"class":425},[58,1052,261],{"class":86},[58,1054,548],{"class":279},[58,1056,108],{"class":94},[58,1058,1060],{"class":60,"line":1059},64,[58,1061,434],{"class":94},[58,1063,1065],{"class":60,"line":1064},65,[58,1066,440],{"class":94},[58,1068,1070],{"class":60,"line":1069},66,[58,1071,446],{"class":94},[58,1073,1075],{"class":60,"line":1074},67,[58,1076,72],{"emptyLinePlaceholder":71},[58,1078,1080,1083,1085,1087,1089,1091,1093,1095,1098],{"class":60,"line":1079},68,[58,1081,1082],{"class":90},"readFolder",[58,1084,95],{"class":94},[58,1086,778],{"class":279},[58,1088,261],{"class":86},[58,1090,299],{"class":94},[58,1092,302],{"class":257},[58,1094,270],{"class":94},[58,1096,1097],{"class":248}," =>",[58,1099,273],{"class":94},[58,1101,1103,1106,1108,1110],{"class":60,"line":1102},69,[58,1104,1105],{"class":316},"  if",[58,1107,299],{"class":94},[58,1109,302],{"class":279},[58,1111,324],{"class":94},[58,1113,1115,1118,1120,1122,1124,1126,1128,1130],{"class":60,"line":1114},70,[58,1116,1117],{"class":279},"    console",[58,1119,283],{"class":86},[58,1121,335],{"class":90},[58,1123,95],{"class":94},[58,1125,99],{"class":98},[58,1127,989],{"class":102},[58,1129,99],{"class":98},[58,1131,108],{"class":94},[58,1133,1135,1138,1140],{"class":60,"line":1134},71,[58,1136,1137],{"class":94},"  } ",[58,1139,376],{"class":316},[58,1141,273],{"class":94},[58,1143,1145,1147,1149,1151,1153,1155,1157,1159],{"class":60,"line":1144},72,[58,1146,1117],{"class":279},[58,1148,283],{"class":86},[58,1150,388],{"class":90},[58,1152,95],{"class":94},[58,1154,99],{"class":98},[58,1156,1019],{"class":102},[58,1158,99],{"class":98},[58,1160,108],{"class":94},[58,1162,1164],{"class":60,"line":1163},73,[58,1165,1166],{"class":94},"  }\n",[58,1168,1170],{"class":60,"line":1169},74,[58,1171,1172],{"class":94},"})\n",[1174,1175,1176],"style",{},"html pre.shiki code .shM36, html code.shiki .shM36{--shiki-default:#008000;--shiki-default-font-style:inherit;--shiki-dark:#51597D;--shiki-dark-font-style:italic}html pre.shiki code .sucPa, html code.shiki .sucPa{--shiki-default:#0000FF;--shiki-default-font-style:inherit;--shiki-dark:#9D7CD8;--shiki-dark-font-style:italic}html pre.shiki code .sq2Xa, html code.shiki .sq2Xa{--shiki-default:#0070C1;--shiki-dark:#BB9AF7}html pre.shiki code .s6v6z, html code.shiki .s6v6z{--shiki-default:#000000;--shiki-dark:#89DDFF}html pre.shiki code .sjNAT, html code.shiki .sjNAT{--shiki-default:#795E26;--shiki-dark:#7AA2F7}html pre.shiki code .sNwUV, html code.shiki .sNwUV{--shiki-default:#000000;--shiki-dark:#9ABDF5}html pre.shiki code .sq7Q2, html code.shiki .sq7Q2{--shiki-default:#A31515;--shiki-dark:#89DDFF}html pre.shiki code .s58z3, html code.shiki .s58z3{--shiki-default:#A31515;--shiki-dark:#9ECE6A}html pre.shiki code .se7cl, html code.shiki .se7cl{--shiki-default:#0000FF;--shiki-default-font-style:inherit;--shiki-dark:#646E9C;--shiki-dark-font-style:italic}html pre.shiki code .sHKXH, html code.shiki .sHKXH{--shiki-default:#267F99;--shiki-default-font-style:inherit;--shiki-dark:#51597D;--shiki-dark-font-style:italic}html pre.shiki code .s6uJR, html code.shiki .s6uJR{--shiki-default:#267F99;--shiki-default-font-style:inherit;--shiki-dark:#646E9C;--shiki-dark-font-style:italic}html pre.shiki code .sWJqL, html code.shiki .sWJqL{--shiki-default:#001080;--shiki-default-font-style:inherit;--shiki-dark:#5A638C;--shiki-dark-font-style:italic}html pre.shiki code .s5MyL, html code.shiki .s5MyL{--shiki-default:#0000FF;--shiki-dark:#BB9AF7}html pre.shiki code .s_ePm, html code.shiki .s_ePm{--shiki-default:#001080;--shiki-dark:#E0AF68}html pre.shiki code .sJUHq, html code.shiki .sJUHq{--shiki-default:#001080;--shiki-dark:#C0CAF5}html pre.shiki code .swp_B, html code.shiki .swp_B{--shiki-default:#AF00DB;--shiki-dark:#BB9AF7}html pre.shiki code .sgi5Y, html code.shiki .sgi5Y{--shiki-default:#0000FF;--shiki-dark:#7DCFFF}html pre.shiki code .s0ObY, html code.shiki .s0ObY{--shiki-default:#0000FF;--shiki-dark:#FF9E64}html pre.shiki code .sT5Vz, html code.shiki .sT5Vz{--shiki-default:#811F3F;--shiki-dark:#89DDFF}html pre.shiki code .sfdgG, html code.shiki .sfdgG{--shiki-default:#EE0000;--shiki-dark:#BB9AF7}html pre.shiki code .sfNUN, html code.shiki .sfNUN{--shiki-default:#811F3F;--shiki-dark:#BB9AF7}html pre.shiki code .s0zpT, html code.shiki .s0zpT{--shiki-default:#EE0000;--shiki-dark:#C0CAF5}html pre.shiki code .sgNCg, html code.shiki .sgNCg{--shiki-default:#811F3F;--shiki-dark:#B4F9F8}html pre.shiki code .svvEX, html code.shiki .svvEX{--shiki-default:#AF00DB;--shiki-default-font-style:inherit;--shiki-dark:#BB9AF7;--shiki-dark-font-style:italic}html pre.shiki code .sjYsg, html code.shiki .sjYsg{--shiki-default:#098658;--shiki-dark:#FF9E64}html pre.shiki code .sny2E, html code.shiki .sny2E{--shiki-default:#000000;--shiki-dark:#BB9AF7}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":53,"searchDepth":68,"depth":68,"links":1178},[],"2024-02-17","md",false,"\u002Fimages\u002Fpost\u002Fbatch-rename-files\u002Fpost.webp",{},"\u002Fpost\u002Fbatch-rename-using-javascript",{"title":5,"description":12},{"loc":1184,"images":1187},[1188],{"loc":37},"post\u002Fbatch-rename-using-javascript","因為 Mac 內建的 rename 沒這麼好用",[1192,1193,1194,286],"javascript","node","batch rename","zWch-4JpMO9d6xdC0Hi7zuMshydKC8_cYXVPS6MlASM",1791370767063]