[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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

评分人数

谢谢分享,

TOP

非常有用

TOP

  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
复制代码
发现验证平年闰年反了,现在调整过来了

TOP

回复 1# xp3000


    感谢分享!希望可以帮助到有需要的人。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表