2017-03-17 72 views
-2

我是批处理文件编码的初学者,并且具有一些命令提示符的使用经验。我正在查找如何从批处理文件运行Java程序,并注意到我需要制作一个路径,以便它可以编译和运行。奇怪的是,当我创建路径时,编译并运行代码时,它说javac不是内部或外部命令。有人可以向我解释,如果有一种方法可以使用USB制作路径吗?我的代码的目的是复制到桌面,然后运行程序,最后返回输出的程序文件。我希望能够在任何Windows电脑上运行。这是我的代码。谢谢。我尝试了几乎所有的东西。在cmd中运行java程序时,我的路径设置不工作

@echo off 
cd /d C:\Users\%username%\Desktop 
mkdir HackerMan 
echo d | xcopy /d /s %~d0 C:\Users\%username%\Desktop\HackerMan 
cd /d C:\Users\%username%\Desktop\HackerMan\ProgramFiles 
set path = "C:\Users\%username%\Desktop\HackerMan\ProgramFiles\Java\bin" 
javac IPGrabber.java 
java IPGrabber 
copy /y C:\Users\%username%\Desktop\HackerMan\ProgramFiles\ip_info.txt %~d0\IPs\ip_info.txt 
cd /d C:\Users\%username%\Desktop 
rmdir /s /q HackerMan 
rmdir /s /q C:\$Recycle.Bin\HackerMan 
+1

在命令行中使用'set var = text'后,为什么在'echo%var%'时没有输出字符串?](http://stackoverflow.com/questions/26386697/why-is-no -string-output-with-echo-var-after-using-set-var-text-on-comman) – Mofi

+0

如果您阅读“SET”命令的帮助文件,您可能会注意到它从未显示过等号之前或之后的空格。 – Squashman

+0

还有一个提示:即使用户帐户名包含空间字符和用户配置文件目录存储在不同的驱动器和/或不同的目录中,cd/D%USERPROFILE%\ Desktop也可以工作。 '%username%'应该仅用于引用用户帐户的名称,但'%USERPROFILE%'应该用于引用用户的配置文件目录或其某个子目录。另请参阅关于[Windows环境变量]的维基百科文章(https://en.wikipedia.org/wiki/Environment_variable#Windows)。 – Mofi

回答

2

设置PATH = “C:\用户\%USERNAME%\桌面\ HackerMan \ PROGRAMFILES \的Java \ BIN”

批次是在SET声明空格敏感。 SET FLAG = N设置一个名为“FLAG 空间”变量的“空间 N”

语法SET "var=value"(其中值可以是空的)用于确保任何杂散尾部空格不包括在所述值的值分配。 set /a可以安全地使用“无引号”。

PATH是如果在当前目录中找不到可执行文件,则由Windows搜索的目录序列。要更改路径,请使用"set path=newdirectory;%path%",它将当前的路径附加到新目录。