本帖最后由 hentai87 于 2024-11-19 13:49 编辑
- @echo off
- setlocal enabledelayedexpansion
-
- :: 创建或清空日志文件
- set "log_file=%temp%\rename_files_log.txt"
- > "%log_file%" echo 日志文件 - %date% %time%
-
- :: 检查并映射网络驱动器
- :check_drive
- set "drive=Y:"
- echo net use %drive% %~dp0
- net use %drive% %~dp0
- if errorlevel 1 (
- set "drive=X:"
- net use %drive% %~dp0
- if errorlevel 1 (
- echo 无法映射网络驱动器,请手动选择一个未被使用的驱动器字母。 >> "%log_file%"
- pause
- exit /b
- )
- )
-
- echo 成功映射驱动器 %drive% 到 %~dp0 >> "%log_file%"
-
- :: 切换到映射的驱动器
- %drive%
-
- :: 获取当前目录
- set "current_dir=%CD%"
- echo 当前目录: %current_dir% >> "%log_file%"
-
- for %%F in (*) do (
- if "%%F" neq "%~nx0" (
- for /f "tokens=1-3 delims=/ " %%a in ("%%~tF") do (
- set "formatted_date=%%a%%b%%c"
- )
-
- set "file_name=%%F"
- set "prefix=!file_name:~0,8!"
-
- if "!prefix!" == "!formatted_date!" (
- echo 文件 "%%F" 已经包含日期前缀,跳过。 >> "%log_file%"
- ) else (
- set "counter=0"
- :check_conflict
- set "new_name=!formatted_date!"
- if !counter! gtr 0 set "new_name=!formatted_date!-!counter!"
-
- if exist "!new_name!_%%F" (
- set /a counter+=1
- goto check_conflict
- )
-
- ren "%%F" "!new_name! %%F"
- if errorlevel 1 (
- echo 重命名 "%%F" 失败。 >> "%log_file%"
- ) else (
- echo 重命名 "%%F" 为 "!new_name!_%%F" >> "%log_file%"
- )
- )
- )
- )
-
- echo 操作完成。日志文件位于: %log_file%
-
-
- :: 断开映射驱动器
- net use %drive% /delete /yes
- if errorlevel 1 (
- echo 断开驱动器 %drive% 失败。请手动断开。 >> "%log_file%"
- ) else (
- echo 成功断开驱动器 %drive%。 >> "%log_file%"
- )
-
- pause
复制代码 %~dp0这个路径有可能有空格
这个是重命名局域网共享文件的,但是遇到文件夹含有空格就报错,文件名含有!也报错,希望解决这2个报错,并增加支持本地路径 |