标题: [其他] 批处理智能代码生成 [打印本页]
作者: cjiabing 时间: 2012-3-19 02:01 标题: 批处理智能代码生成
喜欢原创,继续原创!
打算做一个“输入中文生成批处理代码”的东西,尝试了下,觉得可行。
下面是一个初步的尝试,需要进行二级判断才行,明天有空了再试。
-
- @echo off
- set title=批处理智能代码生成 V1.0
- :menu
- cls
- for /f "tokens=*" %%a in ('
- title;%title%
- ::by cjiabing;from bathome;date 2012-3-19
- ^&echo. ^&echo. ^&echo. ^&echo.%title%^&echo. ^&echo. ^&echo.
- 尝试一种智能:通过输入描述性词语来达到自动编程的效果。
- ^&echo;
- 按照批处理规则输入描述词语(中文),以空格分隔关键词。
- ^&echo;
- 比如:显示 我爱你 并 输入 123.txt
- ^&echo;
- 等于:echo 我爱你 ^^^& echo 我爱你^^^>^^^>123.txt
- ') do echo; %%a
- echo;
- set input=
- set /p input= 请输入:
- if "%input%"=="" goto menu
- for /f "tokens=1-3*" %%a in ("%input%") do (
- echo; 输入的是:%%a %%b %%c %%d %%e&echo;
- if /i %%a==显示 echo;%%b
- if /i %%a==写入 echo;%%b>>%%c
- if /i %%a==清屏 goto menu
- if /i %%a==返回 goto menu
- if /i %%a==关闭回显 @echo off
- if /i %%a==打开回显 @echo on
- if /i %%a==设置变量延迟 setlocal enabledelayedexpansion
- if /i %%a==关闭变量延迟 endlocal
- if /i %%a==设置 set %%b=%%c
- if /i %%a==输入 set /p %%b=%%c
- if /i %%a==运算 set /a %%b=%%c
- if /i %%a==如果存在 if exist %%b %%c
- if /i %%a==如果不存在 if not exist %%b %%c
- if /i %%a==如果有值 if defined %%b %%c
- if /i %%a==如果没有值 if not defined %%b %%c
- if /i %%a==如果是空值 if "%%b"=="" %%c
- if /i %%a==如果不是空值 if not "%%b"=="" %%c
- if /i %%a==如果 if "%%b"=="%%c" %%d
- if /i %%a==如果不 if not "%%b"=="" %%c
- )
- pause>nul
- goto menu
-
复制代码
作者: find 时间: 2012-3-19 09:01
是不是跟易语言编程有点神似
作者: cjiabing 时间: 2012-3-19 11:53
回复 2# find
可以表情?
当时我只是想输入汉字让它自动生成命令,免得输入英文罗罗索索的,后来想想,这个跟易语言真的有点神似,嘿嘿!~
作者: cpp 时间: 2012-3-19 15:29
回复 3# cjiabing
发现就在批处理上就是个神人,厉害
作者: cjiabing 时间: 2012-3-19 17:41
555,不大好弄,处理IF的参数让人头疼!~
我想到一个新的挑战,看挑战区。
作者: hlzj88 时间: 2012-6-10 02:40
这个想法很好,如果能像菜单一样来选择就好,譬如我们来 for 选择是for一个文件还是for一个文件夹下的类型文件,这样生产的代码,大致是不会错的,需要对细节修改就可以使用了。
作者: 狱渊 时间: 2013-4-29 15:55
好厉害 你们 我还是新人啊
作者: cjiabing 时间: 2013-4-29 21:41
回复 7# 狱渊
我经常写些半吊子的东西,时间和精力有限啊,大家相互学习!~
作者: 狱渊 时间: 2014-1-17 18:45
没法比 我过了好久还是个小白。。。
作者: binghejin 时间: 2014-1-20 19:57
支持,顶一个!
作者: ads350668398 时间: 2014-10-24 07:26
回复 1# cjiabing
重点应该放在智能一块吧
作者: dengyuli 时间: 2014-11-1 13:21
本帖最后由 dengyuli 于 2014-11-23 13:51 编辑
可以通过替换特定字符串来实现智能化。- @echo off
- setlocal enabledelayedexpansion
- for /f "delims= tokens=* eol=?" %%a in (%~1) do (
- set b=%%a
- set c=!b:关闭回显=@echo off! & set b=!c!
- set c=!b:修改背景颜色=color! & set b=!c!
- set c=!b:暂停=pause! & set b=!c!
- set c=!b:如果=if ! & set b=!c!
- set c=!b:执行结果不显示在屏幕上=^>nul! & set b=!c!
- set c=!b:执行结果不显示到屏幕上=^>nul! & set b=!c!
- set c=!b:即使出现错误也不显示=^2^>nul! & set b=!c!
- set c=!b:显示=echo ! & set b=!c!
- set c=!b: 不 =not ! & set b=!c!
- set c=!b:存在=exist ! & set b=!c!
- set c=!b:大于等于= geq ! & set b=!c!
- set c=!b:小于等于= leq ! & set b=!c!
- set c=!b:不等于= neq ! & set b=!c!
- set c=!b:大于= gtr ! & set b=!c!
- set c=!b:小于= lss ! & set b=!c!
- set c=!b:等于===! & set b=!c!
- set c=!b:的话= (! & set b=!c!
- set c=!b:判断结束=^)! & set b=!c!
- set c=!b:否则=^) else ^(! & set b=!c!
- set c=!b:赋值=set! & set b=!c!
- set c=!b:交互模式=/p! & set b=!c!
- set c=!b:计算=/a! & set b=!c!
- set c=!b: 其表达式为:==! & set b=!c!
- set c=!b:累加=+=! & set b=!c!
- set c=!b:##=%%! & set b=!c!
- set c=!b:循环结束=^)! & set b=!c!
- set c=!b:循环,=for ! & set b=!c!
- set c=!b:文本解析=/f! & set b=!c!
- set c=!b:遍历目录=/r! & set b=!c!
- set c=!b:计数循环=/l! & set b=!c!
- set c=!b:分隔符为:=delims=! & set b=!c!
- set c=!b:取用的节:=tokens=! & set b=!c!
- set c=!b:忽略以此字符打头的行:=eol=! & set b=!c!
- set c=!b:从此行的下一行开始处理:=skip=! & set b=!c!
- set c=!b:要读取的文档为:=in ! & set b=!c!
- set c=!b:定义局部变量为=%%%%! & set b=!c!
- set c=!b:执行以下命令:=do (! & set b=!c!
- set c=!b:初始值:=! & set b=!c!
- set c=!b:步长:=! & set b=!c!
- set c=!b:终止值:=! & set b=!c!
- set c=!b:标签 =:! & set b=!c!
- set c=!b:跳转至=goto :! & set b=!c!
- set c=!b:程序尾部=eof! & set b=!c!
- set c=!b:调用=call ! & set b=!c!
- set c=!b:输出到文件并覆盖=>! & set b=!c!
- set c=!b:输出到文件并追加=>>! & set b=!c!
- set c=!b:刷新屏幕=cls! & set b=!c!
- set c=!b:的使用方法= /?! & set b=!c!
- set c=!b:颜色设置=color! & set b=!c!
- set c=!b:黑色=0! & set b=!c!
- set c=!b:蓝色=1! & set b=!c!
- set c=!b:浅绿色=a! & set b=!c!
- set c=!b:绿色=2! & set b=!c!
- set c=!b:红色=4! & set b=!c!
- set c=!b:紫色=5! & set b=!c!
- set c=!b:黄色=6! & set b=!c!
- set c=!b:白色=7! & set b=!c!
- set c=!b:亮白色=f! & set b=!c!
- set c=!b:设置窗口大小=mode con! & set b=!c!
- set c=!b:窗口高度为:=lines=! & set b=!c!
- set c=!b:窗口宽度为:=cols=! & set b=!c!
- set c=!b:标题:=title ! & set b=!c!
- set c=!b:注释:=rem ! & set b=!c!
- set c=!b:提示是否删除=/p! & set b=!c!
- set c=!b:强制删除=/f! & set b=!c!
- set c=!b:删除 =del ! & set b=!c!
- set c=!b:包括其子文件夹下的所有指定文件=/s! & set b=!c!
- set c=!b:安静模式=/q! & set b=!c!
- set c=!b:要删除的文件的属性:=/a:! & set b=!c!
- set c=!b:只读文件=R! & set b=!c!
- set c=!b:隐藏文件=H! & set b=!c!
- set c=!b:无内容索引文件=I! & set b=!c!
- set c=!b:非=-! & set b=!c!
- set c=!b:系统文件=S! & set b=!c!
- set c=!b:存档文件=A! & set b=!c!
- set c=!b:创建目录:=md ! & set b=!c!
- set c=!b:不提示覆盖已存在的文件=/y! & set b=!c!
- set c=!b:复制文件=copy ! & set b=!c!
- set c=!b:到= ! & set b=!c!
- set c=!b:删除目录=rd ! & set b=!c!
- set c=!b:及其子文件夹= /s! & set b=!c!
- for /l %%a in (1,1,100) do (
- if "!c:~-1!"==" " (
- set c=!b:~0,-1!
- set b=!c!
- ) else (
- break
- )
- )
- echo ^!c!>>a.bat
- )>nul 2>nul
- call a.bat
- del /f /q a.bat >nul 2>nul
复制代码
作者: dengyuli 时间: 2014-11-1 13:24
中文脚本举例:- 刷新屏幕
- 关闭回显
- 设置窗口大小 窗口高度为:15 窗口宽度为:60
- 标题:汉化批处理脚本
- 颜色设置 黑色浅绿色
- 循环,文本解析 "分隔符为: 取用的节:* 忽略以此字符打头的行:?" 定义局部变量为a 要读取的文档为:(test.txt) 执行以下命令:
- 显示%%a
- 循环结束
- 暂停 执行结果不显示在屏幕上
复制代码
将中文脚本拖到12楼的批处理上
作者: amwfjhh 时间: 2014-11-3 14:25
本帖最后由 amwfjhh 于 2014-11-3 14:28 编辑
楼主这个思路很新颖啊,以中文作为转换参数调用批处理,相当于你自己写一个基于批处理的平台,弄完工程量大……
顺带吐槽,居然新手不能发贴,到上尉得到哪年月了……
作者: Batcher 时间: 2014-11-3 21:56
回复 14# amwfjhh
可以到这个版块发帖:
http://bbs.bathome.net/forum-5-1.html
作者: amwfjhh 时间: 2014-11-5 16:30
回复 15# Batcher
管理员居然回复了,有点受宠若惊,只是吐槽一下,想把自己学习过程中写的一些小玩艺发上来玩玩,发到求助区有点文不对题,这两天看了一下论坛的贴子,然后就不好意思发了。发出来在老鸟眼中肯定是问题连连,极度不爽,不要否认,专注技术的人或多或少都有些强迫症滴……
作者: Batcher 时间: 2014-11-5 18:15
回复 16# amwfjhh
可以发出来让大家帮你改进
作者: cjiabing 时间: 2014-11-7 19:29
回复 12# dengyuli
有心情你继续鼓捣啊,不错!~
我实证抽不出时间和耐心了,老咯!~
作者: dengyuli 时间: 2014-11-23 13:51
本帖最后由 dengyuli 于 2014-11-23 13:52 编辑
代码已在12楼更新,生成的脚本不再会有多余的空格,节省空间,另外又添加了几个命令。
作者: MCRGZN 时间: 2015-8-13 23:10
不错不错不错不错不错
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |