经常会碰见文件夹,以及其中文件命名有空格的情况:
这些空格对有些代码程序不友好,做了一个一键拖动去除文件名称空格
只用把文件夹或者多个文件拖动到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