首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

VBScript 自動化重命名資料夾與捷徑:FileSystemObject 實戰

     編輯:更多程式設計知識

前言

Windows 環境下需批次修改「開始功能表」資料夾名稱與桌面捷徑,手動操作繁瑣且易出錯。VBScript 配合 Scripting.FileSystemObject 可輕鬆完成,適合軟體安裝/更新腳本。

完整腳本代碼

Option Explicit

Dim fso, f, fsoGetFolder
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' === 設定區 ===
Const OldFolderName = "263 Enterprise Messenger"
Const NewFolderName = "Peacemap Messenger"

Const OldShortcut1 = "263 Enterprise Messenger.lnk"
Const NewShortcut1 = "Peacemap Messenger.lnk"
Const OldShortcut2 = "卸載 263 Enterprise Messenger.lnk"
Const NewShortcut2 = "卸載 Peacemap Messenger.lnk"

Const BasePath = "C:\Documents and Settings\All Users\開始功能表\程式集\"
Const NewPath  = BasePath & "Peacemap Messenger\"
Const DeskPath = "C:\Documents and Settings\All Users\桌面\"
' ============

' 1. 重命名資料夾
If fso.FolderExists(BasePath & OldFolderName) Then
    Set fsoGetFolder = fso.GetFolder(BasePath & OldFolderName)
    fsoGetFolder.Name = NewFolderName
    WScript.Echo "資料夾重命名完成:" & NewFolderName
End If

' 2. 重命名開始功能表捷徑
If fso.FileExists(NewPath & OldShortcut1) Then
    Set f = fso.GetFile(NewPath & OldShortcut1)
    f.Name = NewShortcut1
End If

If fso.FileExists(NewPath & OldShortcut2) Then
    Set f = fso.GetFile(NewPath & OldShortcut2)
    f.Name = NewShortcut2
End If

' 3. 重命名桌面捷徑
If fso.FileExists(DeskPath & OldShortcut1) Then
    Set f = fso.GetFile(DeskPath & OldShortcut1)
    f.Name = NewShortcut1
End If

MsgBox "所有重命名操作完成!", vbInformation, "完成"

關鍵物件與方法解析

物件/方法用途
CreateObject("Scripting.FileSystemObject")建立檔案系統操作核心物件
FolderExists / FileExists檢查存在性,避免錯誤
GetFolder / GetFile取得資料夾/檔案物件參考
Folder.Name = 新名稱重命名資料夾 (屬性寫入)
File.Name = 新名稱重命名檔案/捷徑

路徑處理注意事項

  • 反斜線跳脫: VBScript 字串中反斜線無需跳脫,但建議使用 \\ 明確語意。
  • 中文路徑: 腳本檔案需以 **UTF-8 with BOM** 或 **ANSI (Big5)** 儲存,否則中文路徑會亂碼導致 FileExists 失效。
  • 環境變數: 硬編碼 C:\Documents and Settings\All Users 僅適用 XP/Server 2003。Vista+ 應用 %ALLUSERSPROFILE% 或 WScript.Shell 取得特殊資料夾:
Dim shell, startMenu, desktop
Set shell = WScript.CreateObject("WScript.Shell")
startMenu = shell.SpecialFolders("AllUsersStartMenu") & "\程式集\"
desktop   = shell.SpecialFolders("AllUsersDesktop") & "\"

進階:批次處理多組重命名

Dim renameMap
renameMap = Array( _
    Array("Old Name 1", "New Name 1"), _
    Array("Old Name 2", "New Name 2"), _
    Array("舊名稱", "新名稱") _
)

For Each pair In renameMap
    Dim oldN, newN
    oldN = pair(0); newN = pair(1)
    If fso.FileExists(targetPath & oldN & ".lnk") Then
        fso.GetFile(targetPath & oldN & ".lnk").Name = newN & ".lnk"
    End If
Next

執行方式

  1. 將代碼存為 rename_shortcuts.vbs (編碼 UTF-8 with BOM)。
  2. 雙擊執行,或命令列:cscript rename_shortcuts.vbs (顯示 Console 輸出)。
  3. 若需管理員權限 (Program Files 等),以系統管理員身分開啟命令列執行。

常見錯誤排查

錯誤現象可能原因解決
「找不到檔案」路徑錯誤、編碼不符、捷徑實為 .url 非 .lnk用 `dir /b` 確認實際檔名;檢查腳本編碼
權限拒絕目標資料夾需管理員權限以管理員身分執行 cscript/wscript
中文亂碼導致判斷失效腳本檔案編碼非系統預設另存為 ANSI 或 UTF-8 with BOM

結語

VBScript 雖屬老技術,但在 Windows 系統管理自動化上仍極實用。掌握 FileSystemObject 核心操作,配合環境變數路徑解析與編碼處理,即能編寫穩健的重命名/部署腳本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved