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

[文件管理] 批处理将文件重命名为文件修改时间(精确到秒)

[复制链接]
发表于 2012-3-7 21:15:19 | 显示全部楼层 |阅读模式
本帖最后由 powerbat 于 2012-3-7 22:41 编辑

支持拖放、支持子目录、支持设置要修改的文件类型(这些功能很简单,可自行添加代码),兼容特殊字符。
  1. @echo off &rem powerbat @ www.bathome.net 批处理之家 bat脚本
  2. set "type=jpg,png" &rem 文件类型
  3. set "folder=%~dp0." &rem 文件所在目录
  4. set "SubDir=0" &rem 是否包含子目录

  5. wmic.exe /? >nul 2>&1 || (echo no wmic, exit& pause&exit/b)

  6. if "%~1" neq "" set "folder=%~1"
  7. for %%a in ("%folder%") do set "FileD=%%~da" & set "FileP=%%~pnxa"

  8. goto skip
  9. rem 先重命名一次,加一段文件名中不会出现的字符串,以防可能的文件名重复问题。
  10. set "ext=%type%" & set "sub="
  11. if "%type%" neq "*" if "%type%" neq "*.*" set "ext=*.%type:,= *.%"
  12. if "%SubDir%" neq "0" set "sub=/s"
  13. for /f "delims=" %%a in ('dir /b %sub% %ext%') do (
  14.     ren "%%~fa" "powerbat@bathome_%%~nxa"
  15. )
  16. :skip

  17. set "part=%FileP:\=\\%"
  18. set "part=%part:[=[[]%"
  19. set "part=%part:_=[_]%"
  20. setlocal enableDelayedExpansion
  21. set "part=!part:%%=[%%]!"
  22. endlocal& set "part=%part%"
  23. if "%type%" neq "*" if "%type%" neq "*.*" (
  24.     set "ext=and (extension='%type:,=' OR extension='%')"
  25. ) else set "ext="
  26. if "%SubDir%"=="0" (
  27.     set "Filter=drive='%FileD%' and path='%FileP:\=\\%' %ext%"
  28. ) else (
  29.     set "Filter=drive='%FileD%' and path LIKE '%part%%%' %ext%"
  30. )
  31. (set wmic=wmic.exe datafile where "%Filter%" get name^,LastModified)

  32. for /f "tokens=1,3* delims=.+ " %%a in ('%%wmic%%') do (
  33.     set "t=%%a"
  34.     rem 用for过滤掉wmic结果中的不可见字符
  35.     for /f "delims=" %%i in ("%%c") do (
  36.         set "f=%%~fi"
  37.         set "p=%%~dpi"
  38.         set "n=%%~ni"
  39.         set "x=%%~xi"
  40.         setlocal enableDelayedExpansion
  41.         set "t=!t:~,4!-!t:~4,2!-!t:~6,2! !t:~8,2!.!t:~10,2!.!t:~12!"
  42.         if not exist "!p!!t!!x!" (
  43.             ren "!f!" "!t!!x!"
  44.         ) else  if "!t!" neq "!n!" (
  45.             set n=1
  46.             for %%u in ("!p!!t!_*!x!") do set /a n+=1
  47.             ren "!f!" "!t!_!n!!x!"
  48.         )
  49.         endlocal
  50.     )
  51. )
  52. pause
复制代码
批处理在特殊字符方面有天生缺陷,所以用批处理要做到兼容特殊字符就有点吃力,效率不怎么高。
重命名时要考虑到的一个重点是判断是否存在重复文件名,由于cmd没有while循环语句,要达到类似效果只能借助标签,但这样会进一步降低效率。
在兼顾效率的基础上,这是采用的方法是先将所有文件修改为别的名字,彻底排除重复的可能性。(默认没有开启,将goto skip去掉即可启用)。

(批处理做这种事真是弱暴了。。。但我不想用vbs,虽然我会)

评分

参与人数 1PB +5 技术 +1 收起 理由
zqz0012005 + 5 + 1 感谢分享

查看全部评分

 楼主| 发表于 2012-3-8 20:00:55 | 显示全部楼层
如果文件数量较多(如几千个),wmic会出错:
代码 = 0x80020009
说明 = 发生意外。
设备 = Dispatch

有可能是wmic分配的内存不够用。
看来wmic也太矬了。。。
vbs版
http://www.bathome.net/thread-15803-1-1.html
发表于 2012-4-15 18:12:51 | 显示全部楼层
某些情况下,同一时间内修改的文件,同一目录内可能很多;

如果有重命名,修改别的文件的名字,来给要命名的文件腾地方,若有快捷方式,或者文件之间存在关联性什么的,就被破坏了;

对程序来说,你只有修改你要访问的文件的权利,谁影响你的访问你就干掉谁,是流氓作风,

用这种方式如何?
201204151808[1].txt
201204151808[2].txt
...
发表于 2015-7-3 19:31:18 | 显示全部楼层
非常有用,好多摄像文件,每次皆是从1,2,3,开始命令,这个批处理完全解决了命名重复的问题
发表于 2024-6-4 15:24:06 | 显示全部楼层
重命名为创建时间是改哪一行。
发表于 2024-6-4 15:46:46 | 显示全部楼层
回复 5# kimpppg


    第35行LastModified修改为CreationDate

评分

参与人数 1技术 +1 收起 理由
kimpppg + 1 这就试试

查看全部评分

发表于 2024-6-4 17:34:51 | 显示全部楼层
本帖最后由 newswan 于 2024-6-4 18:50 编辑

powershell
  1. Param(
  2.         [Parameter(ValueFromRemainingArguments)]
  3.         [string[]]$Path
  4. )

  5. if ([string]::IsNullOrEmpty($Path)) {
  6.         $Path = "D:\Downloads"
  7. }
  8. $ext = "*.apk"
  9. $isRecurse = $False


  10. if ( $isRecurse ) {
  11.         $command = { Get-ChildItem -Filter $ext -File -Recurse }
  12. } else {
  13.         $command = { Get-ChildItem -Filter $ext -File }
  14. }


  15. $Path | Invoke-Command -ScriptBlock $command | ForEach-Object {
  16.                 write-host ( '' + $_.LastWriteTime + " : " + $_.FullName )
  17.                 Rename-Item -Path $_.FullName -NewName ( '' + $_.LastWriteTime.ToString("yyyy-MMdd-HHmmss") + $_.Extension )
  18.         }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 00:10 , Processed in 0.022294 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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