Board logo

标题: [在线求助]如何调用自身前跳过或删除某些代码 [打印本页]

作者: HUNRYBECKY     时间: 2007-1-20 05:39    标题: [在线求助]如何调用自身前跳过或删除某些代码

最近正在做一个清理系统的程序,遇到一个小问题,自己想了很久都没有想出很好的方法。
问题描述:我想我的这个批处理也能在繁体系统中运行而且显示为正常的繁体字体,所以使用了一个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 现在进行清理系统....

作者: dikex     时间: 2007-1-20 06:03
@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 ]
作者: HUNRYBECKY     时间: 2007-1-20 09:31


  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 ...

现在回到家里了,因为家里没有装繁体系统,所以不好测试,明天再测试,非常感谢你的回贴。
作者: HUNRYBECKY     时间: 2007-1-21 03:06
你的代码非常好,测试通过,非常感谢。还有一个问题就是我先这个被调用的批处理PURGECHT.BAT运行完成后删除自己,怎么搞。我在最后加入
IF EXIST PURGECHT.BAT DEL /F/Q/S/A PURGECHT.BAT
EXIT
后提示还是找不到这个文件,批处理不能自动退出。
作者: HUNRYBECKY     时间: 2007-1-21 03:44
我现在测试出来了,繁体和简体下面都很好的运行。我在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