中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [在线求助]如何调用自身前跳过或删除某些代码
作者:
标题: [在线求助]如何调用自身前跳过或删除某些代码 上一主题 | 下一主题
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『楼 主』:  [在线求助]如何调用自身前跳过或删除某些代码

最近正在做一个清理系统的程序,遇到一个小问题,自己想了很久都没有想出很好的方法。
问题描述:我想我的这个批处理也能在繁体系统中运行而且显示为正常的繁体字体,所以使用了一个CT.EXE工具进行转化,但是如何根据系统的语言判断来实现该程序的调用呢,如果是简体则直接跳到CHS来执行,如果是繁体则执行转化,转化后我却不能调用自身了,因为转化为繁体后调用自身会重复执行CHS段前的程序,如何在转化后跳出这段程序呢?我试过使用FOR 语句来实现,但是效果不好.有没有更好的解决方法?
@ECHO OFF
REM 设置初试环境:默认为非安静模式;增加TOOLS搜索路径;获取系统语言(950繁体;437英文;936简体)
SET ISMSG=YES
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
FOR /F "TOKENS=1,2 DELIMS=: " %%I IN ('CHCP') DO SET LAN=%%J
IF "%LAN%"=="936" GOTO CHS
IF "%LAN%"=="950" GOTO CHT

:CHT
IF EXIST PURGECHT.BAT GOTO :CHTOK
CT.EXE /B /S PURGE.BAT /D PURGECHT.BAT
GOTO :CHTOK

:CHTOK
START /B "" "PURGECHT.BAT"
GOTO CHS
EXIT

:CHS
ECHO 现在进行清理系统....


2007-1-20 05:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 2 楼』:  

@ECHO OFF
REM 设置初试环境:默认为非安静模式;增加TOOLS搜索路径;获取系统语言(950繁体;437英文;936简体)
SET ISMSG=YES
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
FOR /F "TOKENS=1,2 DELIMS=: " %%I IN ('CHCP') DO SET LAN=%%J
IF "%JUT%"=="1" GOTO CHS
IF "%LAN%"=="936" GOTO CHS
IF "%LAN%"=="950" GOTO CHT

:CHT
SET JUT=1
IF EXIST PURGECHT.BAT GOTO :CHTOK
CT.EXE /B /S PURGE.BAT /D PURGECHT.BAT
GOTO :CHTOK

:CHTOK
START /B "" "PURGECHT.BAT"
GOTO CHS
EXIT

:CHS
ECHO 现在进行清理系统....


多用了一个判断的环境变量JUT,看看效果如何

一开始打错字了,CHG改CHS,ok

[ Last edited by dikex on 2007-1-19 at 09:32 PM ]

2007-1-20 06:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by dikex at 2007-1-20 06:03:
@ECHO OFF
REM 设置初试环境:默认为非安静模式;增加TOOLS搜索路径;获取系统语言(950繁体;437英文;936简体)
SET ISMSG=YES
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
FOR /F "T ...

现在回到家里了,因为家里没有装繁体系统,所以不好测试,明天再测试,非常感谢你的回贴。

2007-1-20 09:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 4 楼』:  

你的代码非常好,测试通过,非常感谢。还有一个问题就是我先这个被调用的批处理PURGECHT.BAT运行完成后删除自己,怎么搞。我在最后加入
IF EXIST PURGECHT.BAT DEL /F/Q/S/A PURGECHT.BAT
EXIT
后提示还是找不到这个文件,批处理不能自动退出。

2007-1-21 03:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 5 楼』:  

我现在测试出来了,繁体和简体下面都很好的运行。我在START后加入了删除调用的批处理即可,不能在代码的最后加就没有问题了。另外我精简了下代码。
@ECHO OFF
REM 设置是否显示消息提示,消息显示时间(这两个参数可以自己修改),搜索路径,并获取系统语言(950繁体;437英文;936简体)
SET ISMSG=YES
SET TIMEOUT=3
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
SET LAN=936
REM FOR /F "TOKENS=1,2 DELIMS=: " %%I IN ('CHCP') DO SET LAN=%%J
IF "%JUT%"=="1" GOTO CHS
IF "%LAN%"=="936" GOTO :CHS

:CHT
SET JUT=1
START /WAIT CT.EXE /B /S "PURGE.BAT" /D "PURGECHT.BAT"
START /B/WAIT PURGECHT.BAT
IF EXIST PURGECHT.BAT DEL PURGECHT.BAT
EXIT

:CHS
ECHO                   系统维护天使V1.0可以实现如下功能
ECHO     1.全方位清理系统垃圾;2.全方位清理和免疫恶意软件;3.全方位优化系统
ECHO 提示:本程序不适合WIN9X机器;本程序可能使系统不稳定;本程序支持繁体和安静模式
ECHO.
ECHO     ╔──────────────────────────────╗
ECHO     │                                                            │
ECHO     │                    系统维护天使V1.0                        │
ECHO     │              本程序由小布点(秋语)编写制作                  │
ECHO     │          欢迎使用小布点制作的绿色软件和其他程序            │
ECHO     │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
ECHO     │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com  │
ECHO     │                                                            │
ECHO     ╚──────────────────────────2006─㊣╝
ECHO.
ECHO 正在进行清理前的准备工作,请稍候.........
PING 127.0.0.1 -n %TIMEOUT% >NULL
GOTO :END

:END
EXIT

2007-1-21 03:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: