标题: [文本处理] 【已解决】BAT:套用这样的思路,BAT为什么不运行? [打印本页]
作者: 思想之翼 时间: 2015-10-5 00:51 标题: 【已解决】BAT:套用这样的思路,BAT为什么不运行?
本帖最后由 思想之翼 于 2015-10-5 19:40 编辑
1、先前的问题:
D:/数据/内有若干bat,每个bat的代码位置固定,比如:
001.bat代码内容为:
@echo off
type d:\数据三\1温湿度\1_001\lishi\wj记录时间.txt>d:\数据三\统计A\001.txt
exit
复制若干上述bat,并将名称改成了002.bat 003.bat ....210.bat
现在需要根据bat的不同数字名称,批量修改bat指定位置的代码内容:
将002.bat的代码修改为:
@echo off
type d:\数据三\1温湿度\1_002\lishi\wj记录时间.txt>d:\数据三\统计A\002.txt
exit
将003.bat的代码修改为:
@echo off
type d:\数据三\1温湿度\1_003\lishi\wj记录时间.txt>d:\数据三\统计A\003.txt
exit
....
这样的批处理如何写?
2、已解决的思路:- @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\数据\"
- for /l %%a in (1001 1 1210) do (
- set "num=%%a"
- >"!num:~1!.bat" echo,@echo off
- >>"!num:~1!.bat" echo,type D:\数据三\1温湿度\1_!num:~1!\lishi\wj记录时间.txt^>D:\数据三\统计A\!num:~1!.txt
- >>"!num:~1!.bat" echo,exit
- )
- pause
复制代码
3、现在套用上述思路的疑问:
为什么下述代码,套用这一方法,不能运行?
@echo off
for /f "skip=1 delims=" %%i in ('dir /b /a-d /o-n /s "d:\分解\数据1\0001\lishi\*.txt"') do (
copy "%%i" "d:\分解\数据2\0001.txt"
goto :eof
)
@echo off
for /f "skip=1 delims=" %%i in ('dir /b /a-d /o-n /s "d:\分解\数据1\0002\lishi\*.txt"') do (
copy "%%i" "d:\分解\数据2\0002.txt"
goto :eof
)
......
@echo off
for /f "skip=1 delims=" %%i in ('dir /b /a-d /o-n /s "d:\分解\数据1\1330\lishi\*.txt"') do (
copy "%%i" "d:\分解\数据2\1330.txt"
goto :eof
)- @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\分解\数据\"
- for /l %%a in (10001 1 11330) do (
- set "num=%%a"
- >"num:~1!.bat" echo,@echo off
- >>"!num:~1!.bat" echo,for /f "skip=1 delims=" %%i in ('dir /b /a-d /o-n /s "d:\分解\数据1\!num:~1!\lishi\*.txt"') do (
- >>"!num:~1!.bat" echo, copy "%%i" "d:\分解\数据2\!num:~1!.txt"
- >>"!num:~1!.bat" echo, goto :eof
- >>"!num:~1!.bat" echo,)
- )
- pause
复制代码
作者: bailong360 时间: 2015-10-5 09:58
注意转义问题- @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\分解\数据\"
- for /l %%a in (10001 1 11330) do (
- set "num=%%a"
- >"!num:~1!.bat" echo,@echo off
- >>"!num:~1!.bat" echo,for /f "skip=1 delims=" %%%%i in ('dir /b /a-d /o-n /s "d:\分解\数据1\!num:~1!\lishi\*.txt"'^) do (
- >>"!num:~1!.bat" echo, copy "%%%%i" "d:\分解\数据2\!num:~1!.txt"
- >>"!num:~1!.bat" echo, goto :eof
- >>"!num:~1!.bat" echo,^)
- )
- pause
复制代码
作者: /zhqsystem/zhq 时间: 2015-10-5 15:03
goto :eof不是随便用的,跳转到最后意味着直接退出,for内运行当第一个数据拷贝完成,直接退出了for循环已经失去了意义,同时结束了自身运行
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |