批处理调用VBS脚本,一键打包时修改app名称

原创 2015年07月07日 16:42:24

1、现在有这么个需求,打包的app名称也可以配置,那就需要替换strings里面的"<string name="app_name">数字化实习实训系统 </string>"这个属性。

2、研究了半天发现批处理只支持ANSI 和 Unicode两种类型字符,批处理修改替换xml中的字符后其他的中文字符也变成了乱码。

3、没办法了,既然批处理对中文的支持有限,那就只能另辟蹊径了。

4利用vbs修改xml里面的数据,发现没问题。

5批处理调用vbs脚本时将中文字符传过去,发现传不过去,传英文就好使。

6然后就将要修改的app名称存入临时txt文件(ANSI格式),在vbs中读取txt中的名称,然后将临时txt删掉。

7vbs读取ANSI格式的中文字符时还是乱码,崩溃中~~~~。

8偶然看到一篇文章,windows中的ANSI在简体中文版windows时是Big5模式。就用big5模式读取txt字符串,发现还是不好使。

9那就试试gbk、gb2312好不好使,GBK好使,泪奔中。

10将这个功能加入到原来的批处理中,中间有个知识点:用call ChangAppName.vbs命令调用vbs脚本。意思为当vbs脚本执行完成后继续执行批处理接下来的内容。

11、贴出完整的一键打包批处理代码及vbs脚本代码供大家参考:
批处理:

@echo off
REM 此文件要放到与HomeWorkForBuild同级目录下
set sp=%cd%\HomeWorkForBuild
set cf=systemCommon.txt
set cf2=qinhanCommon.txt
set st=WWWWWWWWWW
REM dt:要更换的地址    http://192.168.200.1/、http://221.212.251.230:807/、http://192.168.0.2:806/
set dt=http://221.212.251.230:807/
REM 生成保存appname的临时文件
set filename=AppName.txt
REM dt:生成app的名称,如果改变则填入名称,如果不改变则为空
set appname=屁屁啊屁屁

xcopy /y /e /h %cd%\HomeWork\* %cd%\HomeWorkForBuild
if exist %cd%\HomeWorkForBuild\systemCommon.txt (
 goto changeSystemCommon
) else (
 copy %cd%\HomeWorkForBuild\src\com\system\HomeWork\common\common.java  %cd%\HomeWorkForBuild\systemCommon.txt /y
 goto changeSystemCommon
)

:changeSystemCommon
setlocal enabledelayedexpansion
pushd %1
for /f "tokens=1-4* delims=:" %%i in ('findstr /n ".*" %sp%\%cf%') do (
set txt=%%j%%k%%l
if "!txt!" == "" (
 echo .>>%1root.tmp
) else (
echo !txt:%st%=%dt%!>>%1root.tmp
)
)
move /y root.tmp %sp%\src\com\system\HomeWork\common\common.java
echo =================华丽的分割线=================
goto moveImage

:moveImage
if exist %cd%\ReplaceImage\drawable-hdpi\ic_launcher.png (
 move /y %cd%\ReplaceImage\drawable-hdpi\ic_launcher.png C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\drawable-hdpi
)
if exist %cd%\ReplaceImage\drawable-hdpi\loading_act.png (
 move /y %cd%\ReplaceImage\drawable-hdpi\loading_act.png C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\drawable-hdpi
)
if exist %cd%\ReplaceImage\drawable-ldpi\ic_launcher.png (
 move /y  %cd%\ReplaceImage\drawable-ldpi\ic_launcher.png C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\drawable-ldpi
)
if exist %cd%\ReplaceImage\drawable-mdpi\ic_launcher.png (
 move /y  %cd%\ReplaceImage\drawable-mdpi\ic_launcher.png C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\drawable-mdpi
)
if exist %cd%\ReplaceImage\drawable-xhdpi\ic_launcher.png (
 move /y  %cd%\ReplaceImage\drawable-xhdpi\ic_launcher.png C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\drawable-xhdpi
)
if exist %cd%\ReplaceImage\drawable-xxhdpi\ic_launcher.png (
 move /y  %cd%\ReplaceImage\drawable-xxhdpi\ic_launcher.png C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\drawable-xxhdpi
)
goto changeAppname

:changeAppname
if "%appname%" NEQ "" (
 echo %appname%>>%filename% 
 call ChangeAppName.vbs
)
goto build

:build
cd HomeWorkForBuild
ant
@pause

vbs脚本:

Call Main 
Sub Main()
	appname = LoadGBK("AppName.txt")
	
	set fso=createobject("scripting.filesystemobject")
	fso.deleteFile "AppName.txt"
	
	allcontent = LoadUTF8("C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\strings.xml")
	allcontent = Replace(allcontent, "AAAAAAAAAA", appname)
	msgbox(allcontent)
	Call WriteFileUTF8("C:\SOFT\adt-bundle-windows-x86-20140624\HomeWorkForBuild\res\values\strings.xml", allcontent) 
End Sub 
  
''''''''''''''''''''''''以下是函数定义'''''''''''''''''''''''''''''''''''''' 

' Valid Charset values for ADODB.Stream 
Const CdoBIG5        = "big5" 
Const CdoEUC_JP      = "euc-jp" 
Const CdoEUC_KR      = "euc-kr" 
Const CdoGB2312      = "gb2312" 
Const CdoISO_2022_JP = "iso-2022-jp" 
Const CdoISO_2022_KR = "iso-2022-kr" 
Const CdoISO_8859_1  = "iso-8859-1" 
Const CdoISO_8859_2  = "iso-8859-2" 
Const CdoISO_8859_3  = "iso-8859-3" 
Const CdoISO_8859_4  = "iso-8859-4" 
Const CdoISO_8859_5  = "iso-8859-5" 
Const CdoISO_8859_6  = "iso-8859-6" 
Const CdoISO_8859_7  = "iso-8859-7" 
Const CdoISO_8859_8  = "iso-8859-8" 
Const CdoISO_8859_9  = "iso-8859-9" 
Const cdoKOI8_R      = "koi8-r" 
Const cdoShift_JIS   = "shift-jis" 
Const CdoUS_ASCII    = "us-ascii" 
Const CdoUTF_7       = "utf-7" 
Const CdoUTF_8       = "utf-8" 
  
' ADODB.Stream file I/O constants 
Const adTypeBinary          = 1 
Const adTypeText            = 2 
Const adSaveCreateNotExist  = 1 
Const adSaveCreateOverWrite = 2 
 
Function WriteFileUTF8(FileName, str) 
    dim adodbStream 
    Set adodbStream = CreateObject("ADODB.Stream") 
    adodbStream.Type = adTypeText 
    adodbStream.Open 
    adodbStream.Charset = CdoUTF_8 
    adodbStream.WriteText(str) 
    adodbStream.SaveToFile FileName & flnm, 2 
    adodbStream.Close() 
    set adodbStream = nothing 
End Function 

Function LoadUTF8( FileName )
	Set stm = CreateObject("Adodb.Stream") 
	stm.Type = 2 
	stm.mode = 3 
	stm.charset = "utf-8" 
	stm.Open 
	stm.LoadFromFile FileName 
	LoadUTF8 = stm.readtext() 
	stm.close 
End Function

Function LoadGBK( FileName )
	Set stm = CreateObject("Adodb.Stream") 
	stm.Type = 2 
	stm.mode = 3 
	stm.charset = "gbk" 
	stm.Open 
	stm.LoadFromFile FileName 
	LoadGBK = stm.readtext() 
	stm.close 
End Function


 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android逆向-python写一个.class分析辅助脚本

0x00 前言 起因 说明 0x01 主函数 程序结构图 程序main函数 程序说明 0x02 python classpy -h python classpy -v firstclass p...
  • qq_36869808
  • qq_36869808
  • 2018年01月13日 21:38
  • 15

VB脚本:BAT脚本调用VB脚本的方法

毫无疑问地,是懒惰促进或引领着人类科技的发展。工作中使用一些小工具可以大幅提高工作效率,释放体力劳动,减少手工操作与守候时间,何乐而不为呢? 在数通平台软件的性能或功能稳定性测试过程中,经常需要用一...
  • hanlizhong85
  • hanlizhong85
  • 2017年06月24日 13:27
  • 1041

DB自动生成用vbs脚本

  • 2010年11月23日 09:53
  • 3KB
  • 下载

一句话vbs下载

dark发的,记录下。echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhtt...
  • chinafe
  • chinafe
  • 2015年07月13日 11:11
  • 1792

VBS脚本常用经典代码

VBS脚本常用经典代码 1、VBS获取系统安装路径 /*先定义这个变量是获取系统安装路径的,然后我们用“&strWinDir&”调用这个变量。*/ setWshShell = WScript.C...
  • cosmoslife
  • cosmoslife
  • 2016年11月21日 18:38
  • 7916

如何将vbs脚本用VB封装为DLL,并在vbs脚本中调用

近来,做关于wincc的项目,用到将vbs脚本封装成DLL,并在vbs脚本里面调用,故而整理如下。 一、如何将vbs脚本封装DLL 1. 在VB6.0中新建ActiveX DLL工程。 2.命名...
  • sillyboy1104
  • sillyboy1104
  • 2015年03月24日 13:34
  • 1889

VBS脚本对AD服务器操作

  • 2012年08月25日 23:11
  • 2KB
  • 下载

一个测试用的VBS脚本样例

Const KENTER="{ENTER}" Const KALTF4="%{F4}" Const KUP="{UP}" Const KDOWN="{DOWN}" Const KLEFT="{...
  • ssmile
  • ssmile
  • 2011年04月07日 10:01
  • 1611

JAVA调用vbScript脚本取得计算机信息小例子

一下的vbs文件,可以
  • dream_broken
  • dream_broken
  • 2014年06月04日 15:03
  • 1431

Vbs脚本编程简明教程

Vbs脚本编程简明教程之九——3妙用SendKeys自动上网并登陆博客3将下面的脚本复制到一个文本文件中,并将其文件名命名为:自动登陆.vbs,然后将拨号软件及本脚本一起复制到程序——启动项中,就可以...
  • u011225629
  • u011225629
  • 2016年10月25日 14:03
  • 699
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:批处理调用VBS脚本,一键打包时修改app名称
举报原因:
原因补充:

(最多只允许输入30个字)