首页
社区
课程
招聘
[原创]一个字符也不用输入的JAVA命令行编译法
发表于: 2014-9-26 23:49 5307

[原创]一个字符也不用输入的JAVA命令行编译法

2014-9-26 23:49
5307

好久没碰过安全方面的东西了,发个帖子来灌灌水。从word里copy过来的,格式全乱了
感兴趣的话请查看附件: 一个字符也不用输入的JAVA命令行编译法.doc

                一个字符也不用输入的命令行编译法                                                                                        By:toofunny, 2014.9.26 , 凌晨

使用手工输入命令的一个显著特点就是:输入长文件名时特别容易输错。
个人感觉在命令行的使用过程中百分之九十的错误都是由输入错误造成的。
首先大家不要觉得有了IDE之后就不需要命令行了,在同时调试多个进程时使用命令行更方便。另外,很多语言都没有IDE的,把下面这个脚本稍作修改,就可以编译其他语言了。(ps: 向频繁的 cd 和 F5 say goodbye...)

下面是脚本内容,因为JAVA比较抠门,编译时要带扩展名,执行时却不允许扩展名,更要命的是不支持绝对路径执行,所以,这个脚本写起来颇费周折。不像汇编的,区区一句ml %strFileName% && link %strFileName% 就搞定了。

::-----------------------------------------------------------------------------------
::filename:CompileAndRunJava.bat
::function:编译运行java源文件
::author: toofunny

@echo Off
Setlocal ENABLEDELAYEDEXPANSION

cls
echo 请拖曳文件到此窗口,然后切换到前端,按下回车:
set /p strPath=

:AnalyzeFileName
call :GetName %strPath% strFileName strDirPath strDrive
set strFullDirPath=%strDrive%%strDirPath%

:Compile
cls
echo Compiling...
echo.
javac "%strFullDirPath%%strFileName%.java" && echo Successful Compiled!
if %errorlevel%==0 (
        echo.
        echo Runing "%strFullDirPath%%strFileName%.class" :
        echo.
        echo ******************************************
        echo.
        pushd "%strFullDirPath%"
        java %strFileName%
        popd
)
echo.
echo ******************************************
echo 请拖曳新文件到此窗口,或者直接按下回车重新编译运行%strFileName%.java:
set /p strPath=
if %strPath%=="" goto Compile
goto AnalyzeFileName

goto :EOF
:GetName
setlocal
endlocal & set "%2=%~n1" & set "%3=%~p1" & set "%4=%~d1"  
goto :EOF
::-----------------------------------------------------------------------------------

        打开notepad保存上面内容为CompileAndRunJava.bat
        双击运行,然后是一个关键的小技巧:拖拽java源文件到命令行窗口中!
这个技巧特别有用,但是我极少见到有人使用,甚至那些专门讲解命令行的书中都没有提到过。
然后点击一下命令行窗口,使它切换到最前端,然后回车,即开始编译运行。

截图:
1.双击运行CompileAndRunJava.bat

2. 拖拽java源文件到命令行窗口。此时标题栏是灰色的。

3.点击一下该窗口,激活它,然后回车。

4.这里为演示一下其他功能,把文件名修改为World,然后编译:

5.把类名修改为World,回到编译窗口,直接按下回车:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 3
支持
分享
最新回复 (5)
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
感觉用bat执行还是繁琐了些, 如果不用IDE的话就必须配编辑器, VIM是一个挺好的选择, 绑定一个按键几段脚本就能解决.
虽然没看过讲命令行的书, 但绝的 %0~%9这些参数还是听常用的, 还可以使用变量扩展把地址变量扩充成各种形式, 很久不用忘了...
2014-9-26 23:55
0
雪    币: 114
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
嗯,一个趁手的编辑器是必须的。bat也可以把地址变量扩充成各种形式。
2014-9-27 02:05
0
雪    币: 382
活跃值: (828)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一直在用这个bat编译运行java文件,自动编译执行最后删除class文件。
注册表里给java文件加上右键选项更方便
@echo off
javac %1
if not exist .\%~n1.class goto end
java %~n1
del .\%~n1.class
:end
pause
2014-9-27 10:12
0
雪    币: 114
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
注册表里给java文件加上右键选项更方便,对。
2014-9-27 21:45
0
雪    币: 233
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
需要带jar包才能编译的.java,编译起来会不会很疼
2014-10-2 00:49
0
游客
登录 | 注册 方可回帖
返回
//