找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25222|回复: 5

[文件操作] 请帮着修改BAT代码拖放文件夹修改文件名

[复制链接]
发表于 2024-4-7 13:54:05 | 显示全部楼层 |阅读模式
请各位大师帮忙看看以下的代码,我用AI做的,但执行不了,提示找不到文件。谢谢。
要求1、建好BAT文件后,以拖动文件夹至该BAT程序上执行
2、程序会将目录下的所有的docdocx文件改名,文件名称起以保留前2个字符,后面以时间的文件名。
想建的BAT内容如下:
  1. set /a folder=%1
  2. pushd %folder%
  3. for /r. %%f in (*.doc *.docx) do (
  4.     set filename=%%~nf
  5.     set newfilename=!filename:~0,2!-%date%.%ext!
  6.     ren "%%f" "%newfilename%"
  7. )
  8. popd
  9. echo 改名完成!
复制代码
发表于 2024-4-7 15:01:02 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-4-7 15:26 编辑

回复 1# dzwind

订正代码如下
特别注意》被处理的目录/文件夹的路径文件名中如没有空格但包含 ^ 字符,将会导致拖入批处理脚本文件时出错 所以建议路径文件名不要包含 ^ 字符

  1. @echo off
  2. if "%~1"=="" exit/b
  3. pushd "%~1" &set "d=%date:/=-%"
  4. for /r %%F in (*.doc *.docx) do (
  5.         set "nF=%%~nF" &setlocal enabledelayedexpansion
  6.         ren "%%~F" "!nF:~,2!-%d%%%~xF" &endlocal
  7. )
  8. popd &pause &exit/b
复制代码
发表于 2024-4-7 15:10:35 | 显示全部楼层
回复 1# dzwind
  1. @echo off
  2. if "%~1" == "" exit /b
  3. if not exist "%~1" exit /b
  4. cd /d "%~1"
  5. set "Today=%date:/=-%"
  6. for /r %%i in (*.doc) do (
  7.     set "BaseName=%%~ni"
  8.     setlocal enabledelayedexpansion
  9.     ren "%%~i" "!BaseName:~,2!-%Today%%%~xi"
  10.     endlocal
  11. )
复制代码
 楼主| 发表于 2024-4-7 15:20:25 | 显示全部楼层
谢谢楼上各位大师的无私帮助
发表于 2024-4-7 19:45:39 | 显示全部楼层
本帖最后由 Five66 于 2024-4-7 19:51 编辑

保存为ansi编码的bat
文件夹名最好不要包含^&%之类的特殊字符

  1. @echo off

  2. if "%~1" == "%cd%" echo error&pause&exit/b
  3. set bbb=""%*
  4. set bbb=%bbb:~2%

  5. setlocal enabledelayedexpansion
  6. if exist "!bbb!" (
  7. cd /d !bbb!
  8. if errorlevel 1 endlocal&pause&exit/b
  9. for %%i in ("!cd!") do endlocal&cd /d "%%~i"
  10. ) else endlocal&echo error&pause&exit/b

  11. set "ddd=%date:/=-%"
  12. for /r %%i in (*.doc) do (
  13. set name=%%~ni
  14. set ext=%%~xi
  15. setlocal enabledelayedexpansion
  16. rename "!name!!ext!" "!name:~,2!-%ddd%!ext!"
  17. endlocal
  18. )

  19. echo done&pause
复制代码
发表于 2024-4-7 20:59:32 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in ('powershell -c "'{0:yyyyMMdd_hhmmss}' -f (get-date)"') do (
  3.         for /r "%~1" %%i in (*.doc?) do (
  4.                 set f=%%i
  5.                 set n=%%~nxi
  6.                 setlocal enabledelayedexpansion
  7.                 ren "!f!" "!n:~0,2!_%%a%%~xi"
  8.                 endlocal
  9.         )
  10. )
  11. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:22 , Processed in 0.017271 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表