Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用批处理分析和修改$PATH_Windows_Batch File - Fatal编程技术网

Windows 使用批处理分析和修改$PATH

Windows 使用批处理分析和修改$PATH,windows,batch-file,Windows,Batch File,我试图解析path变量,并将任何目录结构删除到JAVA_HOME或windows上安装JAVA的备用位置。最终目标是从path变量中删除位置并重置变量。这就是我开始的 SETLOCAL SET TEMPPATH="%PATH%" SET NEWPATH ="" CALL :parse %TEMPPATH% GOTO :NEXT :PARSE SET list=%1 SET list=%list:"=% FOR /F "tokens=1* delims=;" %%a IN (

我试图解析path变量,并将任何目录结构删除到JAVA_HOME或windows上安装JAVA的备用位置。最终目标是从path变量中删除位置并重置变量。这就是我开始的

    SETLOCAL
SET TEMPPATH="%PATH%"

SET NEWPATH =""

CALL :parse %TEMPPATH%

GOTO :NEXT

:PARSE

SET list=%1

SET list=%list:"=%

FOR /F "tokens=1* delims=;" %%a IN ("%list%") DO (

   ::ECHO A: %%a
   ::ECHO B: %%b

   IF NOT "%%a"=="%VAR_JAVA_HOME%" CALL :SUB "%%a"

   IF NOT "%%b"=="" CALL :PARSE "%%b"   

)
exit /b

:SUB

::echo in subroutine

::echo Passed into subroutine: %1

::echo NEW PATH is: "%NEWPATH%"

IF DEFINED NEWPATH IF %NEWPATH%==""(

   SET NEWPATH=%1;

   ECHO "IN SUB:" %NEWPATH%

   )

IF DEFINED NEWPATH IF "NEWPATH:~1, %1"==""(

   SET NEWPATH="%NEWPATH%";%1

   ECHO %NEWPATH%

)
ECHO "New path varible:" "%NEWPATH%"

exit /b

:NEXT
::ECHO "Removed Java entries from the path..."

ENDLOCAL
当脚本运行时,我收到以下错误: C:\Windows此时意外出现

如有任何建议,将不胜感激


俄罗斯

显而易见的问题是:

每个IF中的块打开前没有空格。 ::循环内的注释;切换到rem。。。。。。 新路径:~1,%1在语法上不正确;例如,使用%NEWPATH:~1%从第二个字符开始提取,或使用%NEWPATH:~0,1%仅提取第一个字符。通过运行set/,可以获得更多帮助?在命令提示符控制台中。 :解析 设置列表=%1 设置列表=%list:=% .................. :SUB ::子例程中的echo .................. :下一个 ..................