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

[文本处理] 【已解决】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、已解决的思路:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "D:\数据\"
  4. for /l %%a in (1001 1 1210) do (
  5. set "num=%%a"
  6. >"!num:~1!.bat" echo,@echo off
  7. >>"!num:~1!.bat" echo,type D:\数据三\1温湿度\1_!num:~1!\lishi\wj记录时间.txt^>D:\数据三\统计A\!num:~1!.txt
  8. >>"!num:~1!.bat" echo,exit
  9. )
  10. 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
)
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "D:\分解\数据\"
  4. for /l %%a in (10001 1 11330) do (
  5. set "num=%%a"
  6. >"num:~1!.bat" echo,@echo off
  7. >>"!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 (
  8. >>"!num:~1!.bat" echo,    copy "%%i" "d:\分解\数据2\!num:~1!.txt"
  9. >>"!num:~1!.bat" echo,    goto :eof
  10. >>"!num:~1!.bat" echo,)
  11. )
  12. pause
复制代码

注意转义问题
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "D:\分解\数据\"
  4. for /l %%a in (10001 1 11330) do (
  5. set "num=%%a"
  6. >"!num:~1!.bat" echo,@echo off
  7. >>"!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 (
  8. >>"!num:~1!.bat" echo,    copy "%%%%i" "d:\分解\数据2\!num:~1!.txt"
  9. >>"!num:~1!.bat" echo,    goto :eof
  10. >>"!num:~1!.bat" echo,^)
  11. )
  12. pause
复制代码
1

评分人数

TOP

goto :eof不是随便用的,跳转到最后意味着直接退出,for内运行当第一个数据拷贝完成,直接退出了for循环已经失去了意义,同时结束了自身运行

TOP

返回列表