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


    在你给的这段样本数据里面哪几位数字表示年份?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Wedy
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "NewFolder=处理结果"
  4. if not exist "%NewFolder%" (
  5.     md "%NewFolder%"
  6. )
  7. for %%x in (*.txt) do (
  8.     (for /f "tokens=1* delims==" %%a in ('type "%%x"') do (
  9.         set "RawKey=%%a"
  10.         set "TrimKey=!RawKey: =!"
  11.         if "!TrimKey!" equ "birth" (
  12.             call :ChangeYear "%%~a" "%%~b"
  13.         ) else if "!TrimKey!" equ "death" (
  14.             call :ChangeYear "%%~a" "%%~b"
  15.         ) else if "x%%b" neq "x" (
  16.             echo %%a=%%b
  17.         ) else (
  18.             echo %%a
  19.         )
  20.     ))>"%NewFolder%\%%x.txt"
  21. )
  22. goto :eof
  23. :ChangeYear
  24. for /f "tokens=1* delims=." %%h in ("%~2") do (
  25.     set /a CalcYear=%%h+2697
  26.     echo %~1="!CalcYear!.%%i"
  27. )
  28. goto :eof
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Wedy


编码问题稍后再说,先试试能否处理人物的时间格式:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "NewFolder=处理结果"
  4. if not exist "%NewFolder%" (
  5.     md "%NewFolder%"
  6. )
  7. for %%x in (*.txt) do (
  8.     (for /f "tokens=1* delims==" %%a in ('type "%%x"') do (
  9.         set "RawKey=%%a"
  10.         set "TrimKey=!RawKey: =!"
  11.         if "%%b" equ "{" (
  12.             for /f "tokens=1* delims=." %%e in ("%%a") do (
  13.                 if "x%%f" neq "x" (
  14.                     call :ChangeKey %%a
  15.                 ) else (
  16.                     echo %%a=%%b
  17.                 )
  18.             )
  19.         ) else if "!TrimKey!" equ "birth" (
  20.             call :ChangeValue "%%~a" "%%~b"
  21.         ) else if "!TrimKey!" equ "death" (
  22.             call :ChangeValue "%%~a" "%%~b"
  23.         ) else if "x%%b" neq "x" (
  24.             echo %%a=%%b
  25.         ) else (
  26.             echo %%a
  27.         )
  28.     ))>"%NewFolder%\%%x"
  29. )
  30. goto :eof
  31. :ChangeKey
  32. for /f "tokens=1* delims=." %%h in ("%~1") do (
  33.     set /a CalcYear=%%h+2697
  34.     echo   !CalcYear!.%%i={
  35. )
  36. goto :eof
  37. :ChangeValue
  38. for /f "tokens=1* delims=." %%h in ("%~2") do (
  39.     set /a CalcYear=%%h+2697
  40.     echo %~1="!CalcYear!.%%i"
  41. )
  42. goto :eof
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Wedy


    你先试试手工把原始文件转成ANSI编码格式,再执行批处理,还会出现这个乱码问题吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13# Wedy
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "NewFolder=处理结果"
  4. if not exist "%NewFolder%" (
  5.     md "%NewFolder%"
  6. )
  7. for %%x in (*.txt) do (
  8.     (for /f "tokens=1* delims==" %%a in ('type "%%x"') do (
  9.         set "RawKey=%%a"
  10.         set "TrimKey=!RawKey: =!"
  11.         set "CheckCurly=%%b"
  12.         if "!CheckCurly:~0,1!" equ "{" (
  13.             for /f "tokens=1* delims=." %%e in ("%%a") do (
  14.                 if "x%%f" neq "x" (
  15.                     call :ChangeKey "%%a" "%%b"
  16.                 ) else (
  17.                     echo %%a=%%b
  18.                 )
  19.             )
  20.         ) else if "!TrimKey!" equ "birth" (
  21.             call :ChangeValue "%%~a" "%%~b"
  22.         ) else if "!TrimKey!" equ "death" (
  23.             call :ChangeValue "%%~a" "%%~b"
  24.         ) else if "x%%b" neq "x" (
  25.             echo %%a=%%b
  26.         ) else (
  27.             echo %%a
  28.         )
  29.     ))>"%NewFolder%\%%x"
  30. )
  31. goto :eof
  32. :ChangeKey
  33. for /f "tokens=1* delims=." %%h in ("%~1") do (
  34.     set /a CalcYear=%%h+2697
  35.     echo   !CalcYear!.%%i=%~2
  36. )
  37. goto :eof
  38. :ChangeValue
  39. for /f "tokens=1* delims=." %%h in ("%~2") do (
  40.     set /a CalcYear=%%h+2697
  41.     echo %~1="!CalcYear!.%%i"
  42. )
  43. goto :eof
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# Wedy


公元1年的时间貌似都没转成功

你给个测试用例,我试试看。

(我来问之前特别去看了下正则表达式"[-]{0,1}[0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}",不知道这个不能用在批处理中吗?

findstr命令不支持这种复杂的正则,需要引入第三方命令才行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表