找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: 306485914

[文本处理] 批处理替换文件内容多条命令执行为何报错?

[复制链接]
发表于 2014-6-6 13:11:43 | 显示全部楼层
把你的AndroidManifest.xml压缩之后传上来,我测试一下看看。
 楼主| 发表于 2014-6-6 17:03:21 | 显示全部楼层
xml文件源码  全部
 楼主| 发表于 2014-6-6 17:17:27 | 显示全部楼层
回复 16# Batcher


    我要根据android.intent.action.MAIN内容定位到那一行 然后再反向往上查找出现的第一个activity的那一行中android:name=对应的内容取出来放到变量中就OK了
发表于 2014-6-6 20:52:22 | 显示全部楼层
  1. @echo off
  2. echo.
  3. if not "%~1"=="" ( if exist %1 goto start else goto noexist ) else goto usage

  4. :noexist
  5. echo 目录:%~1 不存在!请确认是否输错!
  6. goto end

  7. :usage
  8. echo 用法:%0 目录名 jid
  9. goto end

  10. :start

  11. set iserror=0
  12. sed -i -e "/<\/application>/r advert\adall.txt" -e "s/<\/application>//" %1\AndroidManifest.xml
  13. if not %errorlevel%==0 ( set iserror=%errorlevel% )

  14. if not "%2"=="" ( sed -i "s/zy2860634b9e5742b2b43acc2e0a22b5f8/%2/g" %1\AndroidManifest.xml )
  15. if not %errorlevel%==0 ( set iserror=%errorlevel% )

  16. REM xcopy advert\SDKALL\* %1\ /Y /E /Q >nul
  17. if not %errorlevel%==0 ( set iserror=%errorlevel% )

  18. ::启动项包名
  19. for /f %%i in ('sed -n "/android.intent.action.MAIN/=" %1\AndroidManifest.xml') do (
  20.     set n=%%i
  21. )
  22. set /a m=n-3
  23. sed -r "%m%,%n%!d; /activity android:label/!d; s/.*android:name=.([^"]+)".*/\1/" %1\AndroidManifest.xml > %temp%\1.dat
  24. set /p str=<%temp%\1.dat
  25. echo %str%
  26. sed  -i "s/com.example.andrpush_mytest_3_7_sdk_wulog_cgdemo.MainActivity/%str%/g" %1\AndroidManifest.xml


  27. ::echo %versionCode%
  28. for /f "tokens=5 delims== " %%i in ('type %1\AndroidManifest.xml^| findstr "android:versionName"') do (
  29.     set versionName=%%~i
  30.     goto :next1
  31. )
  32. :next1
  33. ::echo %versionName%

  34. for /f "tokens=3 delims== " %%i in ('type %1\AndroidManifest.xml^| findstr "android:versionCode"') do (
  35.     set versionCode=%%~i
  36.     goto :next2
  37. )
  38. :next2

  39. for /f "tokens=3 delims=<>" %%i in ('type %1\res\values\strings.xml^| findstr "app_name"') do (
  40.     set appname=%%i
  41.     goto :next3
  42. )
  43. :next3
  44. echo,%appname%

  45. echo 版本号:%versionCode%-----------------版本名: %versionName% > %1\Package.txt
  46. ::sed -i "s#android:versionCode=".*"#android:versionCode="%newCode%"#" %1\AndroidManifest.xml

  47. :end
复制代码
我测试的是这个代码
没有发现报错
执行的命令如下:
  1. test.bat . 123456
复制代码
 楼主| 发表于 2014-6-9 11:45:03 | 显示全部楼层
回复 19# Batcher


    那个代码是一部分有写东西加不上可能还没报错 这次我给你一个完整的 你打开点击exe程序就行  然后主要看advert文件夹中的j那个文件就是咱写的那个 总报错,但是把你写的那句话去掉就没事 不知道是不是冲突原因
 楼主| 发表于 2014-6-9 14:54:44 | 显示全部楼层
回复 20# 306485914


    <activity android:label="@string/ap" android:name="com.unity3d.pl" android:config="lo/>如果不用tokens 而获取android:name的值放到一个变量里 还有什么方法?
主要那个android:name="com.unity3d.pl"位置不是一定在那个位置 ,所以tokens有时候不好使
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 06:32 , Processed in 0.026644 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表