我是唯一一个有这个问题的人:在运行类似.bat的东西时,"X:....path"经常变成" " X:\.。\path 并产生错误?



在运行.bat之类的程序时,"X:....path"经常变成""X:..path并产生错误。例如,我正在安装apktool,然后它显示为:'""C:Program' is not recognized as an internal or external command,operable program or batch file.然后,我复制命令并将其中一个双引号放在末尾,如下所示:"C:Program"一切都很顺利,安装很成功。然后我试图解码一个apk,但出现了完全相同的问题:'""C:Program' is not recognized as an internal or external command, operable program or batch file.这次我不知道如何修复它,它不像现在的.bat,我无法打开@echo并复制最后一个命令并编辑它。所以我在这里问:如果我是唯一遇到这个问题的人吗?有办法解决这个问题吗?非常感谢。

我的命令:

apktool d test.apk

运行解码命令的图像:1

apktool.bat内容:

@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul
set java_exe=java.exe
if defined JAVA_HOME (
set java_exe="%JAVA_HOME%binjava.exe"
)
rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
set BASENAME=apktool
goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion
rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
rem Directory, rebuild
set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
rem APK file, unpack
set fastCommand=d
)
:load
"%java_exe%" -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %*
rem Pause when ran non interactively
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pause

使用set "var=value"设置字符串值-这样可以避免尾部空格引起的问题。不要分配终端、Space或"——从元素中构建路径名——这可能会让过程变得更容易。如果使用语法set var="value",则引号将成为指定值的一部分。

set java_exe="%JAVA_HOME%binjava.exe"

应该是

set "java_exe=%JAVA_HOME%binjava.exe"

(在整个代码中应用此原则(

然后,如果您需要">在任何地方,将其插入需要的地方-不要试图将其作为变量值的一部分。

这样至少可以解决你的一些问题。

相关内容

最新更新