Board logo

标题: [文本处理] 【已解决】BAT:将多个bat代码合并,为何出错 [打印本页]

作者: 思想之翼    时间: 2014-10-16 22:40     标题: 【已解决】BAT:将多个bat代码合并,为何出错

本帖最后由 思想之翼 于 2014-10-17 14:21 编辑

@echo off&setlocal enabledelayedexpansion
set filenum=100   
    for /l %%a in (1,1,%filenum%) do (
        for /f "delims=" %%i in (D:\模版\模版1\模版1_001\lishi\%%a.txt) do (
            set /a n+=1
            for %%a in (!n!) do set "#%%a=!#%%a! %%i"
        )
        set /a m=n,n=0
    )
    (for /l %%a in (1,1,!m!) do echo,!#%%a:~1!)>D:\模版\数据(横并)1\001.txt
exit

@echo off&setlocal enabledelayedexpansion
set filenum=100   
    for /l %%a in (1,1,%filenum%) do (
        for /f "delims=" %%i in (D:\模版\模版1\模版1_002\lishi\%%a.txt) do (
            set /a n+=1
            for %%a in (!n!) do set "#%%a=!#%%a! %%i"
        )
        set /a m=n,n=0
    )
    (for /l %%a in (1,1,!m!) do echo,!#%%a:~1!)>D:\模版\数据(横并)1\002.txt
exit

......

@echo off&setlocal enabledelayedexpansion
set filenum=100   
    for /l %%a in (1,1,%filenum%) do (
        for /f "delims=" %%i in (D:\模版\模版1\模版1_100\lishi\%%a.txt) do (
            set /a n+=1
            for %%a in (!n!) do set "#%%a=!#%%a! %%i"
        )
        set /a m=n,n=0
    )
    (for /l %%a in (1,1,!m!) do echo,!#%%a:~1!)>D:\模版\数据(横并)1\100.txt
exit

将上述100个类似的代码,合并如下,代码不运行,为何?
  1. @echo off
  2. set filenum=100
  3. for /l %%x in (1001,1,1100) do (
  4.     set y=%%x
  5.     setlocal enabledelayedexpansion
  6.     for /l %%a in (1,1,%filenum%) do (
  7.         for /f "delims=" %%i in (D:\模版\模版1\模版1_!y:~1!\lishi\%%a.txt) do (
  8.             set /a n+=1
  9.             for %%a in (!n!) do set "#%%a=!#%%a! %%i"
  10.         )
  11.         set /a m=n,n=0
  12.     )
  13.     (for /l %%a in (1,1,!m!) do echo,!#%%a:~1!)>D:\模版\数据(横并)1\!y:~1!.txt
  14.     endlocal
  15. )
  16. exit
复制代码

作者: 小智BAT    时间: 2014-10-17 08:16

回复 1# 思想之翼


   源代码本身报错,再加上合并也不是这样的的啊,处理的到exit直接退出了,哪还能继续运行??
作者: 思想之翼    时间: 2014-10-17 08:47

回复 2# 小智BAT

单个代码完美正确解决问题。现在只需要将100个这样的代码合并。
作者: apang    时间: 2014-10-17 09:40

本帖最后由 apang 于 2014-10-18 00:41 编辑

转义:
>D:\模版\数据^(横并^)1\!y:~1!.txt

或者用引号包围(其实也是转义):
>"D:\模版\数据(横并)1\!y:~1!.txt"
作者: apang    时间: 2014-10-17 09:44

回复  小智BAT

单个代码完美正确解决问题。现在只需要将100个这样的代码合并。
思想之翼 发表于 2014-10-17 08:47



    如果有txt文本行数不相等的情况,你再试试还完美不?




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