标题: [文本处理] [已解决]拖放处理文件的批处理代码求排错 [打印本页]
作者: ksla 时间: 2016-1-8 23:03 标题: [已解决]拖放处理文件的批处理代码求排错
解决方法在十八楼...
M1不能正常输出..请问如何解决呢,,各位大大
M2可正常使用!
我认,,我是左抄抄,右抄抄的!!- @echo off
- setlocal EnableDelayedExpansion
- title XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- mode con: cols=80 lines=40
- :ch
-
- set/p aa=输入序号后回车确定:
- echo.%aa%|findstr "^[1-8]$">nul&&goto M%aa%
- goto ch
-
- :M1
- cls
- if "%aa%"=="q" goto quit
- set /p a=请输入需要批处理的文本后按回车键(q=退出):
- if "%a%"=="q" goto zcd
- cls
- gawk "BEGIN{FS=OFS=\".\"}/^[0-9]/{if(!a[$1\"_\"$2\"_\"$3]++)print $1,$2,$3,\"0/24\";next}{print}" %a% > 2.txt
- pause
- goto ch
-
-
-
- :M2
- cls
- echo 输入Q返回主菜单
- set a=
- set/p a=请将文件拖入:
- if /i "%a%"=="q" goto zcd
- cls
- echo 正在计算文本行数,请稍等......
- for /f "delims=" %%i in (%a%) do set/a b+=1
- cls
- set c=
- set/p c=请输入要得到的文件个数:
- set/a d=%b%/%c%+3
- cls
- echo 正在分割,请稍等......
- set e=1
- set f=0
- for %%k in (%a%) do set wjm=%%~nk
- for /f "delims=" %%j in (%a%) do (
- echo %%j>>A.txt
- set/a f+=1
- if !f! GEQ %d% set/a e+=1 & set f=0
- )
- cls
-
- move A.txt D:\TOOL\H\QQp1
- move A.txt D:\TOOL\H\QQp2
- move A.txt D:\TOOL\H\QQp3
- move A.txt D:\TOOL\H\QQp4
- move A.txt D:\TOOL\H\QQp5
- move A.txt D:\TOOL\H\QQp6
- echo 分割与移动成功...
- pause
- goto ch
复制代码
作者: ksla 时间: 2016-1-9 09:02
顶顶...........
作者: ksla 时间: 2016-1-9 12:00
顶顶...........
作者: gawk 时间: 2016-1-9 15:47
请介绍一下M1想实现什么功能?
希望得到的效果是什么?
实际得到的效果是什么?
作者: ksla 时间: 2016-1-9 16:01
回复 4# gawk
拖入文本的方式的方式,然后实现下面工能:
未完成前:
#---------中国CN
1.1.1.1
2.2.2.2
3.3.3.3
#---------美国EN
4.4.4.4
5.5.5.5
6.6.6.6
完成后:
#---------中国CN
1.1.1.0-20
2.2.2.0-20
3.3.3.0-20
#---------美国EN
4.4.4.0-20
5.5.5.0-20
6.6.6.0-20
作者: gawk 时间: 2016-1-9 16:11
回复 5# ksla
%e%这个变量是在哪里定义的?
作者: ksla 时间: 2016-1-9 16:13
回复 6# gawk
这个值不是表示(被拖进去的文件)吗?
作者: gawk 时间: 2016-1-9 16:49
回复 7# ksla
set/p a=请将文件拖入:
很显然不是
作者: ksla 时间: 2016-1-9 16:51
我本身也是这个值的%a%,忘记把set/p a=改成set/p e=
但改了一样不行!!
作者: ksla 时间: 2016-1-9 16:54
回复 8# gawk
提示这些错误信息!!
gawk: cmd. line:1: BEGIN{FS=OFS="."}/[0-9]/{if(\\IP\4.\lo13957120\lo157696\2.txt
gawk: cmd. line:1: ^ backslash not last character on line
gawk: cmd. line:1: BEGIN{FS=OFS="."}/[0-9]/{if(\\IP\4.\lo13957120\lo157696\2t.txt
gawk: cmd. line:1: ^ syntax error
作者: ksla 时间: 2016-1-9 16:58
本帖最后由 ksla 于 2016-1-9 17:01 编辑
回复 8# gawk
如果可以做到下面那样...那就方便了!!
(1)文本分割
(2)转换IP格式
按下2键
拖放文本...
未完成前:
#---------中国CN
1.1.1.1
2.2.2.2
3.3.3.3
#---------美国EN
4.4.4.4
5.5.5.5
6.6.6.6
按A键
完成后:
#---------中国CN
1.1.1.0-20
2.2.2.0-20
3.3.3.0-20
#---------美国EN
4.4.4.0-20
5.5.5.0-20
6.6.6.0-20
按B键
完成后:
1.1.1.0-20
2.2.2.0-20
3.3.3.0-20
4.4.4.0-20
5.5.5.0-20
6.6.6.0-20
作者: gawk 时间: 2016-1-9 18:16
回复 10# ksla
我的 Win 7 + gawk 4.1.0 测试没有遇到这个报错
作者: gawk 时间: 2016-1-9 18:18
回复 9# ksla
改了一样不行,说明代码里面可能有不止一个错误,我指出的是第一个错误。解决一个就离正确更进一步,不着急慢慢来。
作者: 回家路上 时间: 2016-1-9 18:28
回复 11# ksla
感觉你问问题就像在刷帖一样,建议想好、组织好语言再问。
作者: ksla 时间: 2016-1-9 18:31
回复 14# 回家路上
你说得对,组织能力有问题,我日后会多多改善!毕竟我未接触过批处理...
作者: ksla 时间: 2016-1-9 18:34
回复 13# gawk
好的...我继续折腾
作者: codegay 时间: 2016-1-9 18:57
搜索提问的智慧
作者: WHY 时间: 2016-1-9 21:03
回复 1# ksla
开启变量延迟以后,表示否定条件的感叹号需要转移,具体在第18行
另外,如果拖拽到CMD窗口的文件路径包含空格,CMD会自动加上双引号,这时候会报错,具体在16行;如果文件名或路径包含&()等,CMD又不会自动加上双引号,放到FOR循环中照样报错。
我的建议是,不要拖拽,直接输好了。
作者: ksla 时间: 2016-1-10 10:17
回复 18# WHY
听你说,我改用的输入的方法,,确实可以了,,谢谢你
作者: WHY 时间: 2016-1-10 22:28
回复 19# ksla
昨晚喝了点小酒,敲错了N多字,抱歉
1.第18行应该是第17行,16行应该是15行;
2.否定条件应该是逻辑非,转移应该是转义。也就是把17行的 ! 改成 ^!,因为开启变量延迟扩展后,!变成了变量引用符,不转义的话会在预处理时被去掉。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |