Board logo

标题: [其他] BAT脚本实现文件含身份证信息排错重命名 [打印本页]

作者: xp3000    时间: 2021-5-19 10:31     标题: 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. }
复制代码

作者: Batcher    时间: 2021-5-19 12:42

回复 1# xp3000


    感谢分享!希望可以帮助到有需要的人。
作者: xp3000    时间: 2021-5-20 21:40

  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
复制代码
发现验证平年闰年反了,现在调整过来了
作者: 1152    时间: 2021-5-21 12:16

非常有用
作者: 1152    时间: 2021-5-21 12:16

谢谢分享,




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2