先前设置的环境变量中为NULL

时间:2016-03-24 10:23:24

标签: batch-file

我正在尝试在Notepad ++中创建一个基本的Java IDE,只要您不使用包,这很容易。但是如果你需要使用-classpath参数,一切都会变得困难。

我想使用这些代码,我想你可以理解:

NPP EXEC代码:

NPP_SAVE
SET_ENV NPP_FULL_CURRENT_PATH=$(FULL_CURRENT_PATH)
SET_ENV NPP_CURRENT_DIRECTORY=$(CURRENT_DIRECTORY)
SET_ENV NPP_NAME_PART=$(NAME_PART)
npp_run cmd /k d:\Users\User\Desktop\script.cmd

script.cmd

SETX CLASSPATH %CD%
set /p deep=Deepness:
:START
if /I %deep% EQU 0 goto END
cd ..
set /a deep=deep-1
goto START
:END
SETX CLASSPATH %CD%
javac -g -cp %CLASSPATH% %NPP_FULL_CURRENT_PATH%
set /p input=Package:
SETX PACKAGE %input%
java -cp %CLASSPATH% %PACKAGE%.%NPP_NAME_PART%

cmd windows

D:\Users\User\Desktop\programozas\java\P05\konyves>SETX CLASSPATH D:\Users\User\Desktop\programozas\java\P05\konyves

SIKERÜLT: A megadott értéket sikerült menteni.

D:\Users\User\Desktop\programozas\java\P05\konyves>set /p deep=Deepness:
Deepness:1

D:\Users\User\Desktop\programozas\java\P05\konyves>if /I 1 EQU 0 goto END

D:\Users\User\Desktop\programozas\java\P05\konyves>cd ..

D:\Users\User\Desktop\programozas\java\P05>set /a deep=deep-1

D:\Users\User\Desktop\programozas\java\P05>goto START

D:\Users\User\Desktop\programozas\java\P05>if /I 0 EQU 0 goto END

D:\Users\User\Desktop\programozas\java\P05>SETX CLASSPATH D:\Users\User\Desktop\programozas\java\P05

SIKERÜLT: A megadott értéket sikerült menteni.

D:\Users\User\Desktop\programozas\java\P05>javac -g -cp NULL D:\Users\User\Desktop\programozas\java\P05\konyves\KonyvProba.java

(SIKERÜLT意味着SUCCESS,它设法保存了价值)

问题

您可以在cmd窗口的最后一行中看到问题。 -cp NULL 我不明白为什么它是NULL,我已将它设置在上一行。

2 个答案:

答案 0 :(得分:0)

这些代码现在似乎有效,但可能不稳定:

set CLASSPATH=%CD%
REM Type in the relative path deepness, for
REM example "package xxx.xxx.xxx;" means 3 deepness
REM No package means 0 deepness
set /p deep=Deepness:
set /a DEEP_FINAL=deep
:START
if /I %deep% EQU 0 goto END
cd ..
set /a deep=deep-1
goto START
:END
set CLASSPATH=%CD%
REM Compiling
javac -g -cp %CLASSPATH% %NPP_FULL_CURRENT_PATH%
REM Executing
if /I %DEEP_FINAL% EQU 0 goto NOPATH
REM May include a "cls" here
REM Type in the package name, for example
REM "package java.util;" becomes "java.util"
set /p PACKAGE=Package:
cls
java -cp %CLASSPATH% %PACKAGE%.%NPP_NAME_PART%
goto FINISH
:NOPATH
cls
java -cp %CLASSPATH% %NPP_NAME_PART%
:FINISH

NPPEXEC代码:

cd d:
cd $(CURRENT_DIRECTORY)
NPP_SAVE
SET_ENV NPP_FULL_CURRENT_PATH=$(FULL_CURRENT_PATH)
SET_ENV NPP_CURRENT_DIRECTORY=$(CURRENT_DIRECTORY)
SET_ENV NPP_NAME_PART=$(NAME_PART)
npp_run cmd /k d:\Users\User\Desktop\script.cmd

这可能与您不同。例如,大多数用户使用c:分区作为源文件。非常重要:您必须以管理员身份运行Notepad ++!我将从现在开始测试它,如果它继续工作,我会发布更多相关标签,因为它是带有Notepad ++的Java IDE。

答案 1 :(得分:0)

SETX 在当前cmd实例中设置环境变量,但是对于furure cmd实例。您需要执行set命令来设置当前实例中的值。