經常會碰見文件夾,以及其中文件命名有空格的情況:
這些空格對有些代碼程序不友好,做了一個一鍵拖動去除文件名稱空格
只用把文件夾或者多個文件拖動到bat代碼上就可以一鍵搞定
分為兩個文件,需要放在一個目錄下:
replace_spaces.py
import os
import sysdef replace_spaces_with_underscore(path):"""遞歸遍歷文件夾或處理單個文件,將文件/文件夾名中的空格替換為下劃線"""# 如果是文件,直接處理if os.path.isfile(path):root = os.path.dirname(path)name = os.path.basename(path)if ' ' in name:new_name = name.replace(' ', '_')src = pathdst = os.path.join(root, new_name)os.rename(src, dst)print(f"文件重命名: {src} -> {dst}")return# 如果是文件夾,遞歸處理# 先處理子目錄,防止重命名后路徑改變導致遍歷錯誤for root, dirs, files in os.walk(path, topdown=False):# 重命名文件for name in files:if ' ' in name:new_name = name.replace(' ', '_')src = os.path.join(root, name)dst = os.path.join(root, new_name)os.rename(src, dst)print(f"文件重命名: {src} -> {dst}")# 重命名當前目錄for name in dirs:if ' ' in name:new_name = name.replace(' ', '_')src = os.path.join(root, name)dst = os.path.join(root, new_name)os.rename(src, dst)print(f"目錄重命名: {src} -> {dst}")if __name__ == "__main__":if len(sys.argv) < 2:print("請提供至少一個文件或文件夾路徑")print("用法: python replace_spaces.py [文件/文件夾路徑1] [文件/文件夾路徑2] ...")sys.exit(1)# 處理所有傳入的路徑for path in sys.argv[1:]:if not os.path.exists(path):print(f"警告: 路徑不存在 - {path}")continueprint(f"開始處理: {path}")replace_spaces_with_underscore(path)print("所有空格替換完成!")# 暫停以查看結果(在批處理中運行時)input("按任意鍵繼續...")
replace_spaces.bat
@echo off
echo 開始處理文件和文件夾...
echo.:: 檢查是否有參數(拖放的文件/文件夾)
if "%~1"=="" (echo 請將文件或文件夾拖放到本批處理文件上pauseexit /b 1
):: 獲取Python腳本的路徑(假設與批處理文件在同一目錄)
set "SCRIPT_DIR=%~dp0"
set "PYTHON_SCRIPT=%SCRIPT_DIR%replace_spaces.py":: 檢查Python腳本是否存在
if not exist "%PYTHON_SCRIPT%" (echo 錯誤: 未找到Python腳本 - %PYTHON_SCRIPT%echo 請確保replace_spaces.py與本批處理文件在同一目錄pauseexit /b 1
):: 檢查Python是否已安裝
python --version >nul 2>&1
if %errorlevel% neq 0 (echo 錯誤: 未找到Python環境echo 請先安裝Python并確保已添加到系統PATHpauseexit /b 1
):: 調用Python處理所有拖放的文件/文件夾
python "%PYTHON_SCRIPT%" %*:: 處理完成
echo.
echo 處理完成!
pause