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

你是每个文件单独处理的
这样解决问题倍觉累啊
你最好把整个问题表述清楚
弄了两个代码 再去合并运行  会有很多问题 比如 变量问题
猜想你  是否想整个合并的文件排序
那样你最后SORT 反倒觉得前面不需要排序 只管写入好了

TOP

本帖最后由 terse 于 2013-7-5 17:39 编辑

回复 15# lateol
帮你整合在一起试吧
里面有重复处理 影响效率 看你的处理量了
  1. @echo off
  2. cls
  3. for /l %%i in (1,1,3) do echo.
  4. color 1A
  5. ECHO         ┏━━━━━━━━━━━━━━━━━━━━┓
  6. ECHO          ┃                        ┃
  7. ECHO    ┏━━━━┫     当前选择: 有规则程序自动合成      ┣━━━━┓
  8. ECHO    ┃      ┃                       ┃      ┃
  9. ECHO    ┃       ┗━━━━━━━━━━━━━━━━━━━━┛      ┃
  10. echo     ┃                       ==处理说明↓==                       ┃
  11. echo.    ┃                                                            ┃
  12. ECHO    ┃    ┗━━直接按回车默认选择“==NC==”文件夹处理━━┛      ┃
  13. echo.    ┃                                                            ┃
  14. echo.    ┏------------------------------------------------------------┓
  15. echo     ┣    ★★★★★★====默认选择==NC==处理。====★★★★★★    ┫
  16. echo.    ┗------------------------------------------------------------┛
  17. echo.    ┃                                                            ┃
  18. echo.    ┣= 请保证该所有程序内刀具无重复即可完成处理=  【0查看说明】  ┫
  19. echo.    ┃                                                            ┃
  20. set /p DJFL=
  21. IF /I '%DJFL%'=='0' GOTO zdhcsm
  22. echo     ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  23. echo     ┃              ===正在处理...以下为刀具信息!====            ┃
  24. pushd "==NC==\"
  25. @echo off&setlocal enabledelayedexpansion
  26. for /f "tokens=1,2* delims=:" %%i in ('findstr /ic:"TOOL NAME = " /c:"(Cutter Name:" /c:"( DIA. = " /c:"(  Dia:" /c:"(Tool Name:" *.nc') do (
  27.     if "!%%i!" == "" (
  28.        set "str="
  29.        if "%%k" == "" for /f "tokens=2-6 delims==,)" %%a in ("%%j") do (
  30.           if "%%c" =="" (
  31.              set D=%%a&set "R=%%b"
  32.           ) else set D=%%c&set "R=%%e"
  33.        ) else for /f "tokens=1-6 delims=:) " %%a in ("%%k") do (
  34.                    if "%%d" neq "" (
  35.                       set D=%%a&set "R=%%d"
  36.                    ) else set "str=%%a"
  37.                )
  38.                 if "!str!" == "" for %%f in (D R) do for /f %%h in ("!%%f!") do (
  39.                     set "%%f=%%h"
  40.                     for /l %%e in (1 1 6) do (
  41.                         if "!%%f:~-1!" == "0" set "%%f=!%%f:~,-1!"
  42.                     )
  43.                     if "!%%f!" neq "0." (
  44.                        if "!%%f:~-1!" == "." set "%%f=!%%f:~,-1!"
  45.                        if "!%%f!" neq "" set "%%f=%%f!%%f!"
  46.                     ) else set "%%f="
  47.                       set "str=!D!!R!"
  48.                 )
  49. ::==========================修正DxRx==========================
  50.                    set strD=!str:~0,1!
  51.                    if "!strD!" equ "R" (
  52.                       for /f "tokens=1 delims=R" %%h in ("!str!") do set /a strJS=%%h*"2"
  53.                       set str=D!strJS!!str!
  54.                    )
  55. ::==========================此为按规则合并参数========================
  56.                     md "!str!" 2>nul
  57.                     set "f=%%~ni"
  58.                     set "f=!f:~-2!"
  59.                     set "s=-G"
  60.                     for %%a in (A R1 F1 -1) do if "!f:%%a=!" neq "!f!" set "s="
  61.                     (
  62.                     for /f "tokens=* delims=:" %%l in ('findstr /ic:G54.1P %%i') do (
  63.                          if not defined %%i-!str!!s! (
  64.                             set "var=%%l"
  65.                             for /f "delims=G " %%l in ("!var:*G54.1P=!") do (
  66.                                 set "var= %%l"
  67.                                 echo !var:~-2! %%i
  68.                                 set %%i-!str!!s!=i
  69.                             )
  70.                          )
  71.                     )
  72.                     )>>"1-!str!!s!.lat"
  73.                     >$.t sort <"1-!str!!s!.lat"
  74.                     move $.t "1-!str!!s!.lat"
  75.   )
  76. )
  77. echo     ┠──────────────────────────────┨
  78. echo     ┃               ===【刀具分类模拟完成!】===                 ┃
  79. ECHO     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
  80. pause
复制代码
1

评分人数

    • lateol: 学习了 强!技术 + 1

TOP

回复 17# terse


    好的,感谢一直帮忙,是这样的,
我是 打算把*.nc 根据文本信息分类且进行按程序名第一个程序相合并,如程序名尾部包含A R1 F1 就合并。
如果直接用 copy 合并,也许顺序就有些混乱,所以就想到, 读取文本信息某特征作为排序特征。
1  R126B17-3.nc 写入对应的.TXT  再对文本进行排序,顺便也想了解了解 是如何完成排序的。呵呵
再利用FOR 提取 每个写入好的txt  提取他的文件名按顺序逐行合并起来就可以了。

TOP

如果 lat文件都是刚刚生成的 和没有别的lat文件 那就可以到代码最后再另排序 那样效率可以提高点

TOP

回复 17# terse


    这个排序 可以 不过有点BUG
2 13124A3D.nc
3 13124A1D.nc
4 13124A1DD.nc
5 002H12-R3.nc
5 002H12-R3.nc
6 002H12-R3.nc
6 002H12-R3.nc
10 002H12-F3.nc
10 002H12-F3.nc
11 002H12-F3.nc
11 002H12-F3.nc

002H12-R3.nc 和 02H12-F3.nc这两个文件里面有两个 G54.1PXX  

002H12-R3.nc 里有 G54.1P5和G54.1P6
02H12-F3.nc  里有 G54.1P10和G54.1P11
取他们第一个就好。

处理后效果如
2 13124A3D.nc
3 13124A1D.nc
4 13124A1DD.nc
5 002H12-R3.nc
10 002H12-F3.nc

TOP

回复 19# terse


    今天信息量蛮大的 让您费神了。  领教了 呵呵,

TOP

回复 21# lateol
修正在 17楼

TOP

回复 22# terse


    完美!
               set %%i-!str!!s!=i
                    )>>"1-!str!!s!.lat"
                    >$.t sort <"1-!str!!s!.lat"
                    move $.t "1-!str!!s!.lat"
这4行代码可以 详解一下吗?
set %%i-!str!!s!=i  赋值了个 i 吗?
这里的 >$.t   和   sort <"1-!str!!s!.lat"是什么情况。
谢谢

TOP

set %%i-!str!!s!=i  赋值  i 与 变量 %%i-!str!!s!
>$.t   和   sort <"1-!str!!s!.lat" 排序文件 1-!str!!s!.lat 并把结果 写进$.t
move $.t "1-!str!!s!.lat" 这个应该清楚吧 可以 move /?  可以等同于剪切理解 ok? 也就是1-!str!!s!.lat内容替换为 $.t 的内容
1

评分人数

    • lateol: 助人为乐!技术 + 1

TOP

返回列表