如何制作" .bat"文件使用某些文本文件的文本作为命令

时间:2015-01-06 15:15:57

标签: java android windows batch-file

我正在编写一个可以解密文件的脚本。 我不会说很多,这是一个WIP看看我的bat文件的这一部分

if %2 equ jar (
set/a numdeox += 1
echo [*] [FW File: %numdeox% of %total%]Now Deodexing %~n1.%2 
) else if %2 equ apk (
set/a numdeoxa += 1
echo - [APP: %numdeoxa% of %totala%]Now deodexing %~n1.%2 
)

echo [*] Changing %~n1.odex to classes.dex, please wait...
java -jar baksmali.jar -a 19 -T ../../tools/inline.txt -d ../temp_framework -x %1
java -jar smali.jar -a 19 setapi.txt out -o classes.dex

del %1 /Q
rd out /Q /S
echo [*] Merging %~n1.%2 and classes.dex ,please wait...
7z.exe a -tzip %~n1.%2 classes.dex>nul
del classes.dex /Q
cd ..\..\

看一下'java jar baksmali.jar -a 19 -T ../../tools/inline.txt -d ../temp_framework -x% 1' 这里api是19.我创建了一个名为“setapi.txt”的txt文件,并询问用户在文本文件中输入的值将在此批处理脚本中自动设置为api。现在我的问题是用什么命令或行代替 19 ,这样无论用户在.txt文件中输入什么数字,它都会被Windows读取 例如 - java -jar baksmali.jar -a(此处命令)../../tools / inline.txt -d ../temp_framework -x%1

如果有人可以提供帮助,我将不得不感谢!或者,如果有人可以为此API事项建议其他替代方案。

2 个答案:

答案 0 :(得分:2)

如果.txt文件只包含您想要的内容,您可以使用...

set /p API=<setapi.txt

但是如果setapi.txt包含的内容多于你想要的内容,我会在前面的代码之后使用变量子字符串......

set API=%API:~5, -1%

如果setapi.txt包含此字符串

API =“JAVA”

然后前面的代码将在您的变量中返回JAVA。

有关set / p look here

的更多信息

有关变量子串look here

的更多信息

答案 1 :(得分:0)

你可以这样做(假设文件只包含一行)

set API=
FOR /F %%i in (setapi.txt) do (
    set API=%%i
)
echo API=%API%
...
java -jar baksmali.jar -a %API% -T ../../tools/inline.txt -d ../temp_framework -x %1
java -jar smali.jar -a %API% setapi.txt out -o classes.dex

编辑设置变量API,看看@Randy Rakestraw的解决方案。这是使用FOR循环的更聪明的方法。