K3非COM+组件批处理工具简介
- 格式:pdf
- 大小:399.64 KB
- 文档页数:7
批处理详解一:批处理是什么批处理是什么?我们学习批处理,先弄懂这个问题,个人认为第一批处理是一个文本文件,可以使用任何一种文本编辑器编写,正是基于这个特点有时候我们不想让别人看到我们书写的代码而使用bat2com和bat2exe将其转换成exe文件,第二批处理是一种解释性程序,它的功能类似于意念,说强很强说弱又很弱,说它是一种程序更重要的是它和其他编程语言一样有自己的控制结构!而且这个程序有个特点就是解释执行即逐行逐句的翻译执行,这个特点我们在后面还会提到!第三任何批处理都是一个DOS的外部命令,这使得我们在编写批处理的时候可以使用参数,这里的参数不是指DOS命令的命令参数,后面的内容会做解释!学习批处理第一个需要解决的问题就是特殊符号!二:批处理中的特殊符号学会批处理中的特殊符号对于我们学习编写批处理是非常有用的!这里我做了一下简单的整理——:、::、&、&&、>、>>、|、||、nul、con、%、(),成对出现的东西是非常容易记忆的,下面我们结合具体的操作仔细的理解!1:“:”与“::”“::”与rem命令是一样效果,起解释说明的作用,和C++中的/……/一样!“:”符号的作用是标记一个标签与goto语句一起使用,其格式为: label,这点与C或C++中的goto语句是截然相反的,在C或者C++中的格式为label:!举例说明:@echo off::标签的使用与goto语句goto test:testecho goto语句test当然goto语句的跳转是有条件,在后面的批处理结构中你会发现goto语句的魅力,这里只是为了更好的理解上面的两个特殊符号!2:“&”与“&&”“&”与“&&”符号的作用是连接两个命令同时执行,区别在于前者不管第一条命令的执行是否成功,都会执行第二条命令,而后者只有在第一条命令执行成功以后才执行后面的命令!例子我们在学完第三组命令“|”与“||”在举!3:“|”与“||”“|”符号的作用是将|前执行的命令结果作为其后DOS命令的参数,比如dir|find "2008",dir 命令查看当前目录的文件,然后所有目录的列表作为find "2008"的参数,也就是从该文件目录下查找所有2008年建立的文件!“||”符号的作用与“|”是截然不同的,它也是连接两个命令同时执行,不过是第一条命令执行错误的条件下才会执行第二条命令!编写如下代码,保存为checkuser.bat:@echo offset a=set/p a=请输入要查找的用户名net user %a% >nul 2>nul && echo 存在该用户|| echo 用户不存在.这是Visual bat程序安装目录中非常经典的一个批处理,它的作用是检查用户输入的帐户是否存在,当用户输入账户后,比如hacker,然后执行net user hacker,如果是存在该帐户也就是说命令执行成功了,那么就显示存在该用户,如果不存在该帐户也就是net user hacker命令没执行成功,就显示用户不存在,结合上面的内容我想您已经理解“||”“&&”“&”三者的微妙之处了!4:“nul”和“con”在checkuser.bat中,我们看到>nul 2>nul的句子,前者是当命令执行成功后不显示回显,比如net user hacker /ad >nul这样用户添加成功后也不会有提示,后者是命令执行错误后不显示回显,两者同时使用的结果就是不论命令执行是否成功,都不显示任何信息!对于“nul”这个特殊符号我们可以理解为空字符的意思,除了不显示回显,还可以使用它删除文件,copy nul >1.txt或者type nul>1.txt,这种删除方式是比较安全的,我想当初李开复如果使用这种方法删除文件,也许就不会招来因为跳槽而导致的官司!对于“con”,我们可以简单的理解为屏幕,在cmd下我们输入:copy *.txt con,可以连续打开多个txt文件以方便我们查看!5:“>”与“>>”“>”它的作用是创建一个文件比如echo hacking >1.txt,而“>>”的作用是将内容追加到一个文件后面,比如前面1.txt的内容为hacking,在CMD下输入echo hacker>>1.txt,那么1.txt 的内容为hackinghacker!6:“%”与“()”把这两个符号放一起有点牵强,“()”起分隔符的作用,在后面的批处理中你会理解这点,在批处理我们可以理解为存在两个分隔符一是空格另一个是括号,这时候的“()”类似于c或者c++中的语句结束符“;”,很多时候我们还使用它包括多条DOS命令,这时候又有点类似于c 或者c++中的{},起包含语句块的作用!“%”它的作用是表示变量,而且在批处理文件和在命令行下书写格式不一样,在命令行下使用%variables,在批处理中我们使用%%variables或者%variables%(不同命令使用不同格式),对于原因,我想它类似于c或者c++中的“转义”,在编程语言中,为了某些特殊的需要提出了“转义”的概念,顾名思义就是转变符号的原有意思,比如\a是响铃!举个例子来说明%的意思,在C++中我们要在屏幕上输出一个“\”,则应该写做cout<<"\\";,如果要输出两个“\”则应该写成cout<<"\\\";,这个过程有个很好听的名字“脱逸”,%也遵循了这样方法,在后面我们将结合for命令详细的说明!提到“%”号,就不得不说一下参数,所谓参数是在批处理文件(开始说的每个批处理文件是一个外部命令)后所添加的以空格分隔的字符串,它的使用方法是%1-9,参数是针对批处理文件做为一个外部命令来说的,虽然参数和变量不是一个概念,但是它是按变量来处理的,所以有时候我们也就称为变量了!举例说明!@echo offmd %1md %1\天下1md %1\天下2md %1\天下3保存为test.bat我们在CMD下输入:test.bat 天下,执行后会在批处理目录中建立一个名字为“天下”的文件夹而且在该文件夹下会一次建立三个子文件夹,这当我们输入“test.bat 天下”的时候“天下”就作为参数传递给了%1,即%1=天下!另外%variables%的作用是引用环境变量!环境变量可以简单理解为系统已经设置好的系统变量比如%systemroot$是c:\windows,%compsec%代表的是c:\windows\system32\cmd.exe,对于系统设置好的环境变量我们可以在CMD下输入set查询,当然我们也可以使用set命令设置环境变量!下面我们看批处理中的控制结构!三:批处理中控制结构批处理中有四种控制结构:if结构、goto结构、for循环结构、call结构!,对于call和goto 结构应该算是以类,主要是因为它们都具有跳转功能,让很多小批处理转化成大批处理,有点结构化程序设计的味道!call命令的作用是调用其他的批处理文件,比如:call test.bat,而goto语句在文章开始我们就做了解释,所以我们主要说的就是if结构与for循环结构,首先我们先理解条件这个词的意思,把世界看成一个连锁体系,每一个事情的前一个事情就是该事情的条件,举个简单的例子,我们坐公交车前需要有1元的零钱,这里1元的零钱就是我们坐车的一个条件,当然在批处理或者程序中就不能那么的表达,在C++中条件其实只有两种:一种靠关系运算符实现,一种靠逻辑运算符实现,批处理中也遵循了这样的规则,当然在批处理使用最多条件还是靠“=”来实现!(一)if结构在CMD下输入if /?,我们会发现if有三种结构,我们先看这三种结构!1:IF [NOT] exist filename command这应该是最简单的一种IF结构,例如if exsit c:\1.txt type 1.txt、if not exsit c:\1.txt echo xxx>c:\1.txt!2:IF [NOT] ERRORLEVEL number command对于number,在DOS时代这个东西有N多比如1、2、3等等而且每个数字都有不同的意义,并且多个number排列时还有规则,在Windows中其实我们只要注意0和1就可以了!0代表的是程序执行成功,1代表的是程序执行失败!我们可以简单将errorlevel理解为一个变量!所以这个命令还可以这样书写:IF [NOT] %ERRORLEVEL%==number command我们举个简单的例子:net user hacker 123 /adif %errorlevel%==0 echo 添加帐户成功上面的内容我们还可以这样写:net user hacker 123 /adif not %errorlevel%==1 echo 添加帐户成功这两种表达看似等效,其实并不等效,第一个是只有用户添加成功的时候才显示添加帐户,而第二种的意思是不管添加成功还是本机已经存在该帐户,都会显示添加帐户成功,它们之间存在细微的差别!not相当于一个修饰,大家要善于分析条件!3:IF [NOT] string1==string2 command这种if结构也是非常有用的,这里首先需要注意等号是两个,其次注意引号并不是必须的,我们可以不加引号,加引号只是为了防止空字符!举例说明,以前很多文章中都涉及到cmd加密器的问题,就是让用户在运行cmd的时候,首先输入密码!网上有更复杂的,其实批处理学到这里我们就可以写出一个比较简单的cmd 加密程序!@echo offset /p %%a=请输入密码if %%a==hacker goto test:testecho 密码正确,登陆成功start %comspec%3:if……else结构在运行上面的批处理过程中,你会发现我们输入任何字符都可以运行cmd!编辑如下代码就不会出现上面的问题了!@echo offset /p %%a=请输入密码if %%a==hacker (goto test) else goto error:testecho 密码正确,登陆成功start %comspec%:errorecho 密码错误这里我们不讨论为什么会出现这样的错误,我们看在批处理中if……else结构的具体使用!在文章开始我们提到批处理是逐行逐句解释执行的,所以我们在用到if……else语句时,最好直接写到一行,写到一行我们需要注意,将if后面的命令,简称if子句,用括号括起来就好了,我想原因也许还是逐行逐句解释执行的,这里的()起的作用和空格一样就是分隔作用(上面提到过),一句话if……else语句,在批处理需要放到一行,并且if子句需要用括号括起来!5:/i开关if结构语句中有一个开关/i,使用该开关,在执行字符串比较的时候不会区分大小写!而且还可以使用如下运算符:EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于书写如下代码:if /I %time% LEQ 06:00:00.00 goto g1if /I %time% LEQ 12:00:00.00 goto g2if /I %time% LEQ 18:00:00.00 goto g3if /I %time% LEQ 24:00:00.00 goto g4:g1net user administrator 123 && goto endg2:net user administrator 456 && goto endg3:net user administrator 789 && goto endg4:net user administrator 023 && goto end:endecho OK %time% 密码修改成功,下次登陆请注意这段代码的意思是根据当前系统时间自动修改计算机登陆密码!结合上面的解释,应该很容易明白,所以这里不在做说明!下面说批处理的精华所在for循环结构!(二):for循环结构1:for variable in (Set) do command (command-paremts)循环的意思是一次次的重复操作,至于操作什么,如何操作,操作多少次,我们都需要运用命令去自己设定!CMD下的for循环基本结构:for variable in (Set) do command (command-paremts)对于上面的结构首先我们先明确批处理中的for循环结构有三个关键字——for、in、do,这是使用for循环结构必不可少的!对于变量我们需要注意在批处理文件中遵循%%即双百分号,在cmd中一般使用%即单百分号,而且在for循环中变量只有52个,(a-z A-Z)可用,对于set的理解就多了,是一个很模糊的概念,可以是一个循环条件,也可以是一个文件、一个目录,command不仅可以是一堆DOS命令,还可以是一个批处理文件,所以后面才可以添加command-paremts!比如for %i in (*.bat *.txt) do del %%i, 这条语句是指,在当前目录下搜索所有BAT和TXT 文件,并逐个将搜索到的文件名存入变量%%i中,每搜索到一个,就执行del命令删除%%i 变量中指定的文件。
K3集成相关文档一、从K3调用数据到Rap中使用1、物料代码:SELECT FItemId as '物料内码',FNumber AS '物料代码',FName AS '物料名称',FModel as '规格型号' FROM t_ICItem2、仓库代码:select FItemID,FName from t_Stock3、运输方式:SELECT FInterID '内码', FID '代码',FName '运输方式' FROM t_SubMessage Where FInterID>0 AND FDeleted=0 And FTypeID=21 ORDER BY FID4、批号:select ti.fitemid '产品内码', ti.fnumber '产品代码',ti.fname '产品名称',ti.fmodel '产品规格',i.fbatchno '批号',CONVERT(DECIMAL(38,2),i.fqty) '数量',ts.fname '仓库' from icinventory i ,t_icitem ti,t_stock ts where i.fitemid = ti.fitemid and i.fstockid = ts.fitemid5、客户资料:select fitemid '内码',fnumber '代码',fname '姓名' from t_Emp where fparentid = 0 order by fnumber6、K3用户:select fuserid '内码',fname '姓名' from t_User7、K3员工:select fitemid '内码',fnumber '代码',fname '姓名' from t_Emp where fparentid = 0 order by fnumber补充:如果要更改数据库换其他的K3数据库则需更改服务器上的ODBC,进行重新配置。
金蝶K3 ERP WISE版本取消批次脚本问题描述在金蝶K3系统实际中已使用了批次管理,但是又不想从头开始,要取消批次的朋友,提供参考;处理方法以下是脚本,2014-07-25金蝶K3 WISE3.1版本测试通过:1) 转换ICInvInitial表数据到临时表select FBrNo,FPeriod,FStockID,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,SUM(FBegQty) AS FBegQty,SUM(FReceive) ASFReceive,SUM(FSend) AS FSend,SUM(FYtdReceive) ASFYtdReceive,SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) ASFEndQty,SUM(FBegBal) AS FBegBal,SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) ASFYtdCredit,SUM(FEndBal) AS FEndBal,SUM(FBegDiff) ASFBegDiff,SUM(FReceiveDiff) AS FReceiveDiff,SUM(FSendDiff) ASFSendDiff,FBillInterID,FUnitID,SUM(FAuxBegQty) ASFAuxBegQty,SUM(FYtdBegQty) AS FYtdBegQty,SUM(FYtdAuxBegQty) ASFYtdAuxBegQty,SUM(FYtdAuxReceive) ASFYtdAuxReceive,SUM(FYtdAuxSend) AS FYtdAuxSend,SUM(FYtdBegBal) AS FYtdBegBal,SUM(FYtdBegDiff) AS FYtdBegDiff,SUM(FYtdReceiveDiff)AS FYtdReceiveDiff,SUM(FYtdSendDiff) ASFYtdSendDiff,FKFDate,FKFPeriod,FSPID,SUM(FSecBegQty) ASFSecBegQty,SUM(FSecReceive) As FSecReceive,SUM(FSecSend) ASFSecSend,SUM(FSecYtdReceive) AS FSecYtdReceive,SUM(FSecYtdSend) AS FSecYtdSend,SUM(FSecEndQty) ASFSecEndQty,FSecUnitID,FStockInDate,FAuxPropID,0 ASFSecCoefficient,SUM(FAuxUnitBegQty) ASFAuxUnitBegQty,SUM(FYtdAuxUnitBegQty) ASFYtdAuxUnitBegQty,SUM(FYtdAuxUnitSend) ASFYtdAuxUnitSend,SUM(FYtdAuxUnitReceive) ASFYtdAuxUnitReceive,FSNListID,FMTONo,FSupplyID INTO#TempICInvInitial FROM ICInvInitial GROUP BYFBrNo,FPeriod,FStockID,FItemID,FBillInterID,FUnitID,FKFDate,FKFPe riod,FSPID,FSecUnitID,FStockInDate,FAuxPropID,FSNListID,FMTONo,FS upplyID2)清空表TRUNCATE TABLE ICInvInitial3)转回数据INSERT INTO ICInvInitial SELECT * FROM #TempICInvInitial4)倒算辅助换算率UPDATE ICInvInitial SET FSecCoefficient = CASE WHEN FSecBegQty<>0 THEN FBegQty/FSecBegQty ELSE 0 END5)删除临时表DROP TABLE #TempICInvInitial6)转换ICBal表数据到临时表SELECT FBrNo,FYear,FPeriod,FItemID,CONVERT(VARCHAR(200),'') ASFBatchNo,SUM(FBegQty) AS FBegQty,SUM(FReceive) ASFReceive,SUM(FSend) AS FSend, SUM(FYtdReceive) AS FYtdReceive,SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) AS FEndQty, SUM(FBegBal) AS FBegBal,SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) AS FYtdCredit,SUM(FEndBal) ASFEndBal,SUM(FBegDiff) AS FBegDiff,SUM(FReceiveDiff) ASFReceiveDiff,SUM(FSendDiff) AS FSendDiff,SUM(FEndDiff) ASFEndDiff,FBillInterID,FEntryID,FStockGroupID,SUM(FYtdReceiveDiff) AS FYtdReceiveDiff,SUM(FYtdSendDiff) AS FYtdSendDiff,SUM(FSecBegQty) AS FSecBegQty,SUM(FSecReceive) As FSecReceive,SUM(FSecSend) ASFSecSend,SUM(FSecYtdReceive) AS FSecYtdReceive,SUM(FSecYtdSend) AS FSecYtdSend,SUM(FSecEndQty) AS FSecEndQty,FStockInDate,FAuxPropID INTO #TempICBal FROM ICBal GROUP BYFBrNo,FYear,FPeriod,FItemID,FBillInterID,FEntryID,FStockGroupID,F StockInDate,FAuxPropID7)清空表TRUNCATE TABLE ICBal8)转回数据INSERT INTO ICBal SELECT * FROM #TempICBal9)删除临时表DROP TABLE #TempICBal10)转换ICInvBal表数据到临时表SELECTFBrNo,FYear,FPeriod,FStockID,FItemID,CONVERT(VARCHAR(200),'')AS FBatchNo,SUM(FBegQty) AS FBegQty,SUM(FReceive) ASFReceive,SUM(FSend) AS FSend,SUM(FYtdReceive) AS FYtdReceive,SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) AS FEndQty, SUM(FBegBal) AS FBegBal,SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) AS FYtdCredit,SUM(FEndBal) ASFEndBal,SUM(FBegDiff) AS FBegDiff,SUM(FReceiveDiff) ASFReceiveDiff,SUM(FSendDiff) AS FSendDiff,SUM(FEndDiff) ASFEndDiff,FBillInterID,FStockPlaceID,FKFPeriod,FKFDate,SUM(FYtdRec eiveDiff) AS FYtdReceiveDiff,SUM(FYtdSendDiff) ASFYtdSendDiff,SUM(FSecBegQty) AS FSecBegQty,SUM(FSecReceive) AsFSecReceive,SUM(FSecSend) AS FSecSend,SUM(FSecYtdReceive) ASFSecYtdReceive,SUM(FSecYtdSend) AS FSecYtdSend,SUM(FSecEndQty) AS FSecEndQty,FAuxPropID,FStockInDate,FMTONo,FSupplyID INTO#TempICInvBal FROM ICInvBal GROUP BYFBrNo,FYear,FPeriod,FStockID,FItemID,FBillInterID,FStockPlaceID,F KFPeriod,FKFDate,FAuxPropID,FStockInDate,FMTONo,FSupplyID11)清空表TRUNCATE TABLE ICInvBal12) 转回数据INSERT INTO ICInvBal SELECT * FROM #TempICInvBal13)删除临时表DROP TABLE #TempICInvBal14)将数据汇总转入临时表SELECT FBrNo,FItemID,CONVERT(VARCHAR(200),'') ASFBatchNo,FStockID,SUM(FQty) AS FQty,SUM(FBal) ASFBal,FStockPlaceID,FKFPeriod,FKFDate,SUM(FQtyLock) ASFQtyLock,FAuxPropID,SUM(FSecQty) AS FSecQty,FMTONo,FSupplyID INTO #TempIcInventory FROM ICInventory GROUP BYFBrNo,FItemID,FStockID,FStockPlaceID,FKFPeriod,FKFDate,FAuxPropID ,FMTONo,FSupplyID15)清空表TRUNCATE TABLE ICInventory16)转回数据INSERT INTO ICInventory SELECT * FROM #TempIcInventory17)删除临时表DROP TABLE #TempIcInventory18)取消批次UPDATE t_ICItem SET FBatchManager = 0 WHERE FBatchManager = 1以上方法,仅提供参考,本人不建议做后台修改数据。
reacthooks批处理原理要理解ReactHooks的批处理原理,首先需要了解React框架的工作原理和Hooks的设计理念。
React是一个流行的JavaScript库,用于构建用户界面。
它使用虚拟DOM和diff算法来比较和更新实际的HTML结构。
Hooks是React16.8版本引入的一个新功能,允许在函数组件中访问和操作状态,从而使组件开发更加灵活和可扩展。
批处理是React渲染过程中一个关键的优化技术。
批处理是将一系列更新组件状态的更改打包成一个单一的操作,以减少不必要的比较和更新。
在React中,这种优化在函数组件中尤其重要,因为函数组件没有像类组件那样的原生state支持。
当Hooks被使用时,它们的行为是通过批处理机制来优化的。
React在内部跟踪每个Hook的使用情况,并确保在组件渲染过程中进行正确的更新。
当你在函数组件中使用Hooks时,React会将这些Hook调用分组在一起,并在必要时进行批量更新。
这种批处理机制可以减少不必要的渲染和更新,从而提高应用程序的性能。
要理解批处理原理,我们需要了解React的渲染过程。
当React 渲染一个组件时,它首先将组件及其子组件的虚拟DOM树进行比较。
如果树的结构发生变化(例如,子组件的添加或删除),则需要进行实际的DOM更新。
如果树的结构没有变化,React将执行一系列的批量更新操作,如样式更新、属性更新等。
这些批量更新操作通常比单独的更新操作要快得多。
Hooks的批处理原理是在React的渲染过程中实现的。
当一个函数组件使用Hooks时,React会将Hook调用分组在一起,并在必要时进行批量更新。
例如,如果你在组件中使用useState和useEffect这两个Hooks,React会将这两个Hook调用一起分组,并在必要时执行批量更新操作。
这种批处理机制可以提高应用程序的性能,尤其是在处理大量UI更新时。
总的来说,ReactHooks的批处理原理是通过将Hook调用分组并优化批量更新操作来实现的。
批处理教程批处理是一种用于编写一系列命令的脚本语言,它可以自动化执行一些常规的任务。
在早期的计算机系统中,批处理被广泛使用,因为它可以简化复杂的操作过程并提高工作效率。
本教程将介绍批处理的基础知识和常用命令,帮助读者快速了解和使用批处理。
一、什么是批处理批处理是一种文本文件,其中包含电脑执行的一系列命令。
它可以批量执行这些命令,而不需要用户手动输入每个命令。
批处理通常以“.bat”或“.cmd”为扩展名,并可以在命令提示符下执行。
二、批处理的基本语法批处理可以用任何文本编辑器创建,并以“.bat”或“.cmd”为后缀。
它通常由一系列命令组成,每个命令占用一行。
示例:@echo offecho Hello, World!pause以上示例中,“@echo off”是批处理中的一个特殊命令,表示不显示每个命令的执行结果。
如果不使用该命令,批处理会显示每个命令的执行过程。
“echo Hello, World!”将字符串“Hello, World!”输出到命令提示符窗口。
“pause”命令用于在执行完所有命令之后暂停批处理,直到用户按下任意键。
三、常用批处理命令1. echo:用于将文本输出到命令提示符窗口。
2. pause:暂停批处理的执行,直到用户按下任意键。
3. cd:改变当前目录。
4. dir:显示当前目录下的文件和文件夹列表。
5. copy:复制文件。
6. del:删除文件。
7. md:创建新的文件夹。
8. rd:删除文件夹。
9. rem:注释代码行,不会被批处理执行。
四、变量和运算符批处理允许使用变量和运算符来处理需要计算的值。
示例:set number=10set /A result=%number%+5echo %result%以上示例中,“set number=10”定义了一个名为“number”的变量,其值为10。
“set /A result=%number%+5”使用“/A”选项来对变量进行算术操作,将“number”的值与5相加,并将结果赋给“result”变量。
目录导航【课程热身】1楼:什么是批处理2、简单批处理命令简介3、批处理符号简介4、常用DOS命令5、语句结构6、字符串处理7、数值计算8、概念方法【300个现成程序自选超市】9、系统类(36)10、系统信息查询&修改(19)11、系统优化(14)12、文件创建&改名等操作(29)13、网络类(10)15、BAT收集(32)16、大型&综合性脚本(8)17、格式转换(9)18、获取路径(8)19、其它类(31)20、网络类(10)21、数值计算(18)【一、什么是批处理】批处理(Batch),也称为批处理脚本。
顾名思义,批处理就是对某对象进行批量的处理。
批处理文件的扩展名为 bat 。
目前比较常见的批处理包含两类:DOS批处理和PS批处理。
PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。
这里要讲的就是DOS批处理。
批处理是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是或者CMD.EXE)解释运行。
类似于Unix中的Shell脚本。
批处理文件具有.bat或者.cmd的扩展名,其最简单的例子,是逐行书写在命令行中会用到的各种命令。
更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等中高级语言一样。
如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。
批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件,可以用记事本直接编辑或用DOS命令创建,也可以用DOS下的文本编辑器Edit.exe来编辑。
在“命令提示”下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe运行该批处理程序。
K/3项目-共用功能操作手册ERP共用功能操作手册信息技术部二零一五年一月三十一日目 录K/3项目-共用功能操作手册 ............................................................................................................................. 1 一.操作说明书 ................................................................................................................................................. 2 1、过滤条件功能介绍 .............................................................................................................................................. 2 2、序时簿功能介绍 .................................................................................................................................................. 8 3、 K 3快捷键介绍 ................................................................................................................................................. 12 4、K 3常见问题处理方案 (14)一.操作说明书1、过滤条件功能介绍1)、过滤条件选择介绍图(一)条件:设置过滤查询条件,在“条件查询”界面的右方。
K/3非COM+组件批处理工具简介本期概述●本文档适用于K/3所有版本。
●本文档以K/3 WISEV12.2版本为例,对K/3系统自带的非COM+组件的文件注册/卸载工具RegMe.exe进行介绍。
通过本文档的学习可以了解如何快速对K/3的非COM+组件进行注册,并学会处理因为此类组件注册信息损坏所引起的常见问题。
版本信息●2012年04月25日 V1.0 编写人:张晓宇●2012年04月26日 V2.0 审核人:杨吉版权信息●本文件使用须知著作权人保留本文件的内容的解释权,并且仅将本文件内容提供给阁下个人使用。
对于内容中所含的版权和其他所有权声明,您应予以尊重并在其副本中予以保留。
您不得以任何方式修改、复制、公开展示、公布或分发这些内容或者以其他方式把它们用于任何公开或商业目的。
任何未经授权的使用都可能构成对版权、商标和其他法律权利的侵犯。
如果您不接受或违反上述约定,您使用本文件的授权将自动终止,同时您应立即销毁任何已下载或打印好的本文件内容。
著作权人对本文件内容可用性不附加任何形式的保证,也不保证本文件内容的绝对准确性和绝对完整性。
本文件中介绍的产品、技术、方案和配置等仅供您参考,且它们可能会随时变更,恕不另行通知。
本文件中的内容也可能已经过期,著作权人不承诺更新它们。
如需得到最新的技术信息和服务,您可向当地的金蝶业务联系人和合作伙伴进行咨询。
著作权声明著作权所有 2012 金蝶软件(中国)有限公司。
所有权利均予保留。
目录1. 应用场景介绍 (3)2. 工具使用方法 (4)2.1 相关文件简介 (4)2.2 使用方法 (6)3. 常见问题及解决方法 (6)1. 应用场景介绍在K/3系统使用过程中,由于受到各种系统环境因素的影响,经常会出现一些组件创建失败的错误,例如K/3主控台登录或者操作明细功能时,系统会出现提示“ActiveX部件不能创建对象”等,如图-1所示。
图-1 ActiveX部件不能创建对象产生此类报错的根源,根据引起异常的文件类型不同而不同,有些是由于COM+组件异常引起,而有的则是因为非COM+组件文件丢失或对应注册信息损坏引起的。
K/3系统中的非COM+组件包含.DLL和.OCX两种文件类型,常规的手工注册方式是采用C:\WINDOWS\system32下的regsvr32.exe文件对指定非COM+组件文件进行注册。
但是,当遇到无法确定引起异常的具体非COM+组件文件,或者出错异常的组件较多时,手工注册方式就显得不方便了。
同时,个别非COM+组件无法通过regsvr32命令直接注册,有其特殊的文件注册方式。
其实,K/3系统自身附带了注册这些文件的工具。
在安装了金蝶K/3客户端或中间层服务部件的计算机操作系统中,都可以查询到以下这些批量文件注册工具:C:\Program Files\Common Files\Kingdee\K3\RegMe.exeC:\Program Files\Common Files\Kingdee\K3\RegProduct.batC:\Program Files\Common Files\Kingdee\K3\UnRegProduct.batC:\Program Files\Common Files\Kingdee\K3\RegMiddleware.batC:\Program Files\Common Files\Kingdee\K3\UnRegMiddleware.batC:\Program Files\Common Files\Kingdee\K3\K3ComponentInfo.INI批量注册工具系统存放路径如图-2所示。
图-2 批量注册工具系统存放路径2. 工具使用方法2.1 相关文件简介1.RegMe.exe:注册*.dll文件和*.ocx文件的命令行工具程序。
2.K3ComponentInfo.INI:存放需要注册的文件列表配置信息,包括文件名称和相对路径以及对应的组件名称、大小和版本等信息,分为三个部分共九小节内容,这三部分分别是指客户端、中间层、WEB服务器的非COM+组件,如图-3所示。
(1)第1部分:客户端非COM+组件,分为三个小节说明:[KDPRODUCT_FILE]:列出位于K3ERP文件夹下的客户端组件,共1129个;[KDPRODUCT_SYSTEM]:列出位于SYSTEM32文件夹下的客户端组件(新版本已迁至K3ERP\KDSYSTEM下),共0个。
[KDPRODUCT_COMMON]:列出位于C:\Program Files\Common Files\Kingdee文件夹下的客户端组件,共43个。
(2)第2部分:中间层服务器非COM+组件,分为三个小节说明:[KDMIDDLEWARE _FILE]:列出位于K3ERP文件夹下的中间层组件,共76个。
部分文件与客户端的文件相同;[KDMIDDLEWARE _SYSTEM]:列出位于SYSTEM32文件夹下的中间层组件(新版本已迁至K3ERP\KDSYSTEM下),共0个。
[KDMIDDLEWARE _COMMON]:列出位于C:\Program Files\Common Files\Kingdee文件夹下的中间层组件,共43个,与客户端组件的43个文件相同。
(3)第3部分:WEB服务器组件非COM+组件,描述同样分为三个小节,由于WEB服务器组件没有需要注册的文件,故各小节数均为0,在此不详细说明。
图-3 K3ComponentInfo.INI文件内容查看3.RegProduct.bat:此文件的运行是通过调用RegMe.exe工具,从K3ComponentInfo.INI 中读取配置信息,对客户端非COM+组件进行注册。
可查看到具体执行命令为:RegMe.exe /Pack="KDPRODUCT" /State="Register" /Delay="50"注意:其中参数“/Pack="KDPRODUCT"”指定了需要注册是客户端组件;参数“/State="Register"”是说明执行的操作为注册文件,参数“/Delay="50"”为设置每个文件注册的间隔时间为50毫秒(MS)。
4.UnRegProduct.bat:此文件的运行同样是通过调用RegMe.exe工具,并从K3ComponentInfo.INI中读取配置信息,对客户端非COM+组件进行反注册。
可查看到具体执行命令为:RegMe.exe /Pack="KDPRODUCT" /State="Unregister" /Delay="50"注意:其中参数“/State=" Unregister "”是说明执行的操作为反注册文件。
5.RegMiddleware.bat:此文件的运行是通过调用RegMe.exe工具,并从K3ComponentInfo.INI中读取配置信息,对中间层非COM+组件进行注册。
可查看到具体执行命令为:RegMe.exe /Pack="KDMIDDLEWARE" /State="Register" /Delay="50"注意:其中参数“/Pack="KDMIDDLEWARE"”指定了需要注册是中间层组件。
6.UnRegMiddleware.bat此文件的运行同样是通过调用RegMe.exe工具,并从K3ComponentInfo.INI中读取配置信息,对中间层非COM+组件进行反注册。
可查看到具体执行命令为:RegMe.exe /Pack="KDMIDDLEWARE" /State="Unregister" /Delay="50"2.2 使用方法当某台客户端上出现非COM+组件错误,需要进行组件注册修复操作时,可在本地安装路径下查找到RegProduct.bat批处理文件并双击运行,如图-4所示,等待进度条执行完成即可。
建议在执行RegProduct.bat文件处理时,先运行UnRegProduct.bat对组件进行反注册,再重新注册以确保注册效果。
图-4 运行RegProduct.bat进行客户端非COM+组件注册3. 常见问题及解决方法虽然非COM+组件注册工具只是一个简单的批处理工具,但是在执行过程中仍有可能遇到一些问题,导致组件注册失败,下面列举几种常见的问题及解决方案。
问题1:批处理文件执行过程中提示找不到文件***.OCX可能是由于对应的.OCX文件丢失引起的,可根据K3ComponentInfo.INI文件中的列表记录,或者在正常的计算机上全盘搜索报错的文件,拷贝到故障机器相应的位置上,并重新运行批处理文件注册即可。
问题2:批处理文件执行过程中360安全卫士不停地弹出警告由于注册K/3组件需要对注册表进行写入操作,并且运行.bat批处理文件被防护类软件认为是危险的操作,所以会弹出提示框,此时需要点击360安全卫士提示信息中的【允许】放行,或者完全退出360之后再运行批处理,确保组件注册正常写入注册表。
问题3:Windows7系统上双击执行批处理文件时弹出用户警告由于Windows 7系统采用更加严格的用户帐户控制策略,所以运行批处理文件这种比较危险的操作时,系统会弹出用户帐户控制的警告信息,需要点击【允许】放行,或者完全关闭UAC控制。
如果还有其它报错,如“未预期错误:退出”时,建议在Win7系统中运行时,首先在批处理文件上单击右键选择【以管理员身份运行】。