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

[其他] BAT脚本实现文件含身份证信息排错重命名

[复制链接]
发表于 2021-5-19 10:31:04 | 显示全部楼层 |阅读模式
本帖最后由 xp3000 于 2021-5-20 21:30 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('more +6 "%0"') do (
  3. type nul>%%a
  4. )
  5. pause & exit /b

  6. :需要生成的文件在下面:
  7. 北京市 张三·000000000000000000000000000000000000000000.jpg
  8. 张三1719700515841131011719700229841131014666432·上海市.png
  9. 张三钦州市 45070119830228326X76543248765457.jpg.jpg.jpg.jpg
  10. 自贡市·510300198002299628510300198002299628855张三.png.png
  11. 张三0000000000000431103197602286731000000000000·永州市.jpg
复制代码
  1. @if(0)==(0) echo off&setlocal EnableDelayedExpansion
  2. @for /f "delims=" %%j in ('dir /b/a-d/on "*.jpg" "*.png"') do (
  3.     @for /f "delims=" %%k in ('echo %%~nj^|cscript -nologo -e:jscript "%~f0"') do (
  4. del /f /s /q 身份证信息错误的文件.txt>nul 2>nul
  5. if "%%j" neq "%%k%%~xj" (
  6.     set str=%%k&set year=!str:~6,4!&set month=!str:~10,2!&set day=!str:~12,2!
  7. if "2!day!" neq "229" (echo.身份证信息:%%k&echo.符合中华人民共和国第二代身份证号命名规则,即将重命名……
  8.     ren "%%j" "%%k%%~xj"&echo.
  9.     ) else (echo.检查到身份证为2月29日,计算平年闰年……
  10.         set /a "y=^!(year%%4)&^!(^!(year%%100))|^!(year%%400)"&set /a x=28+!y!
  11.             if !day! equ !x! (
  12.                 echo.出生年为闰年:2月!x!天………………………
  13.                 echo.身份证信息:%%k&echo.符合中华人民共和国第二代身份证号命名规则,即将重命名……
  14.                 ren "%%j" "%%k%%~xj"&echo.
  15.                 ) else (
  16.                 echo,出生年为平年:2月!x!天………………………
  17.                 echo.身份证信息:%%k&echo.身份证信息错误,忽略重命名…………………&echo.
  18.                 echo.%%j>>身份证信息错误的文件.txt
  19.                 )
  20.                     )
  21.                         ) else (
  22.             echo %%j :文件已忽略……&echo.
  23.             )
  24.         )
  25.     )
  26. )
  27. pause & exit /b
  28. @end

  29. var objShell  = new ActiveXObject('Shell.Application');

  30. while(!WScript.StdIn.AtEndOfStream) {
  31.     var strFile = WScript.StdIn.ReadLine();
  32.     var strFile = strFile.replace(/.*([1-9][0-9]{5}(19|20)[0-9]{2}(([0][13-9]|11|12)([0][1-9]|[12][0-9]|30)|([0][13578]|10|12)(31)|02([0][1-9]|1[0-9]|2[0-8]|29))[0-9]{3}[0-9X]).*/g, '$1');
  33.     WSH.Echo(strFile);
  34. }
复制代码

评分

参与人数 4技术 +4 收起 理由
smss + 1 很给力
eldenring + 1 niubi
Batcher + 1 感谢分享
qixiaobin0715 + 1 厉害!!!

查看全部评分

发表于 2021-5-19 12:42:49 | 显示全部楼层
回复 1# xp3000


    感谢分享!希望可以帮助到有需要的人。
 楼主| 发表于 2021-5-20 21:40:15 | 显示全部楼层
  1. @echo off
  2. title 验证平年闰年工具
  3. :1
  4. SETLOCAL
  5. set /p year=请输入年份:
  6. if not defined year goto 1

  7. set /a "yp=!(year%%4)&!(!(year%%100))|!(year%%400)"

  8. if %yp%==0 (echo %year%年:平年2月28天) else (echo %year%年:闰年2月29天)
  9. ENDLOCAL
  10. GOTO 1
复制代码
发现验证平年闰年反了,现在调整过来了
发表于 2021-5-21 12:16:43 | 显示全部楼层
非常有用
发表于 2021-5-21 12:16:52 | 显示全部楼层
谢谢分享,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 17:35 , Processed in 0.032395 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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