windowsjava启动脚本
A. windows设置开机自启动脚本
Windows系统想要快速设置开机自动启动某个程序,可以使用以下几种方法设置:
第一种:设置启动项
1.找到启动文件夹,我的是C:\Users\ThinkPad\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,或者打开运行,输入shell:startup,回车,也可以快速打开启动文件夹。
2.拷贝需要开机启动的程序的快捷方式到此文件夹即可。
3.打开任务管理器-启动查看启动项。
这样就设置好了,下次计算机启动时,程序也会自动启动的。
第二种:使用计划任务自启动
1.新建文本文件DebugStart.txt,打开写入以下内容:
tasklist|find /i "authSender.exe" && echo started || start "" "D:\Debug\authSender.exe"。
这条语句不能换行, authSender.exe 是程序名, "D:\Debug\authSender.exe"是此程序所在路径,tasklist|find /i "authSender.exe"是判断进程是否存在,程序是否已经开启,如未开启才会启动程序,然后改后缀名 .txt 为 .bat,双击即可启动程序。(可以在每条语句前使用 :: 来注释一条语句),这种方法还可以批量启动不同程序,只需要在此文件中重启一行,按相同格式写第二个要启动的程序对应的语句即可。
2.进入任务计划程序窗口,创建任务。
接着选择触发器选项卡,选择新建,在第一栏开始任务处选择登录时(启动时开始任务需要管理员权限)或启动时(启动时开始任务需要管理员权限),点击确定。由于我们的 bat脚本有做判断,所以不用担心程序会启动多次。
在操作选项卡选择新建,并选择启动程序选项,以及在程序和脚本处选择刚才编写的.bat程序,点击确定,然后再点击确定(创建任务界面的确定)。
关闭页面,即可做到开机自动启动程序。
第三种:通过组策略设置脚本随服务器启动
1.开始->运行->gpedit.msc->计算机配置->Windows设置->脚本(启动/关机)。其中Win10有很多版本,其中家庭版默认是不提供组策略功能,如果需要给win10的家庭版添加组策略的功能,可以参考https://blog.csdn.net/lwpkjio/article/details/85236808。
2.添加启动脚本,点击确定。
这样就可以了。
第四种:添加服务自动运行
1.开始---运行---cmd---回车,在弹出的窗体中输入如下命令:
sc create Debug binPath= D:\Debug\authSender.exe start= auto,其中Debug为将要创建的服务名。要删除创建的服务也很简单,使用以下命令即可:sc delete ServiceName
2.打开控制面板---管理工具---服务(或者 开始---运行---services.msc---确认)打开服务管理器,看看你创建的服务已经在里面了,至此,服务运行已创建完成。
B. java程序如何在win7系统中开机启动详解
以下是在win7系统中如何让我们自己写的java程序开机自启
1,首先我们需要把我们的java程序打成可以运行的jar,放到当前系统的 classpath 目录中。
2,新建 bat 文件。流程如下:
@echo off
java -jar 路径xxxx.jar
@pause
然后点击文件-另存为(存放jar的目录下),文件名修改xxxx.bat(提议命名和jar名一致)。
3,windows+r输入regedit会出现注册表编辑器。
4,在注册表编辑器中找到Run目录,具体路径如下:
HKEY_LOCAL_
5,找到Run目录之后,在右边框中右击新建字符串值,新建唯一标示作为键名,然后右击新建名称-修改在数值数据中填写"路径xxxx.bat"。
6,重启你的机器,你会看到你想要的效果。
C. java,怎么用脚本运行
1.直接执行python脚本代码
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///执行python脚本
2. 执行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///执行python py文件
4 filepy.close();
3. 使用Runtime.getRuntime()执行脚本文件
这种方式和.net下面调用cmd执行命令的方式类似。如果执行的python脚本有引用第三方包的,建议使用此种方式。使用上面两种方式会报错java ImportError: No mole named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();
D. 启动Java应用的Shell脚本
对于Java应用程序(非web应用) 在部署后 常常需要一个启动脚本来加载一些第三方的jar包 并启动应用
对于java应用程序 我一般喜欢将程序的目录结构写成如下的方式
myapp
| lib
| bin
| packages
一些配置文件和属性文件
一个startup sh 或bat启动脚本
其中 packages是程序的根包 其中有子包和class文件等
在包中 有一个Main calss的类 这个作为程序的入口
下面给出一个最一般的写法
startup sh #!/bin/sh
programdir=
num=$#
temp=$CLASSPATH
#setting libs path
libs= /lib/*
append(){
temp=$temp : $
}
for file in $libs; do
append $file
done
export CLASSPATH=$temp: : /:$programdir
export LANG=zh_CN
nohup java classpath $CLASSPATH packaages xxx yyy Main &
这样 只要按照上面的方式组织程序 启动脚本就需要改动下Main前面的包路径即可
nohup 上面脚本中最后一行前有nohup 这是将程序的输入输出都将附加到当前目录的 nohup out 文件中
lishixin/Article/program/Java/hx/201311/25993
E. java启动windows命令行
这是摘自JAVA NB 网 http://www.javanb.com 上的例子。
如何用java启动windows命令行程序: http://www.javanb.com/java/1/17740.html
先请编译和运行下面程序:
import java.util.*;
import java.io.*;
public class BadExecJavac2
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
我们知道javac命令,当不带参数运行javac 程序时,它将输出帮助说明,为什么上面程序不产生任何输出并挂起,永不完成呢?java文档上说,由于有些本地平台为标准输入和输出流所提供的缓冲区大小有限,如果不能及时写入子进程的输入流或者读取子进程的输出流,可能导致子进程阻塞,甚至陷入死锁。所以,上面的程序应改写为:
import java.util.*;
import java.io.*;
public class MediocreExecJavac
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
下面是正确的输出:
D:\java>java MediocreExecJavac
Usage: javac 〈OPTIONs>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath Specify where to find user class files
-cp Specify where to find user class files
-sourcepath Specify where to find input source files
-bootclasspath Override location of bootstrap class files
-extdirs Override location of installed extensions
-endorseddirs Override location of endorsed standards path
-d Specify where to place generated class files
-encoding Specify character encoding used by source files
-source Provide source compatibility with specified release
-target Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-X Print a synopsis of nonstandard options
-J Pass directly to the runtime system
Process exitValue: 2
D:\java>
下面是一个更一般的程序,它用两个线程同步清空标准错误流和标准输出流,并能根据你所使用的windows操作系统选择windows命令解释器command.com或cmd.exe,然后执行你提供的命令。
import java.util.*;
import java.io.*;
class StreamGobbler extends Thread
{
InputStream is;
String type; //输出流的类型ERROR或OUTPUT
StreamGobbler(InputStream is, String type)
{
this.is = is;
this.type = type;
}
public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
{
System.out.println(type + ">" + line);
System.out.flush();
}
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
public class GoodWindowsExec
{
public static void main(String args[])
{
if (args.length < 1)
{
System.out.println("USAGE: java GoodWindowsExec ");
System.exit(1);
}
try
{
String osName = System.getProperty("os.name" );
System.out.println("osName: " + osName);
String[] cmd = new String[3];
if(osName.equals("Windows XP") ||osName.equals("Windows 2000"))
{
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
}
else if( osName.equals( "Windows 98" ) )
{
cmd[0] = "command.com" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
}
Runtime rt = Runtime.getRuntime();
System.out.println("Execing " + cmd[0] + " " + cmd[1]+ " " + cmd[2]);
Process proc = rt.exec(cmd);
// any error message?
StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR");
// any output?
StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
// any error???
int exitVal = proc.waitFor();
System.out.println("ExitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
下面是一个测试结果:
D:\java>java GoodWindowsExec " Test.java Test1.java"
osName: Windows XP
Execing cmd.exe /C Test.java Test1.java
OUTPUT>已复制 1 个文件。
ExitValue: 0
D:\java>
下面的测试都能通过(windows xp+jdk1.5)
D:\java>java GoodWindowsExec dir
D:\java>java GoodWindowsExec Test.java
D:\java>java GoodWindowsExec regedit.exe
D:\java>java GoodWindowsExec NOTEPAD.EXE
D:\java>java GoodWindowsExec first.ppt
D:\java>java GoodWindowsExec second.doc
function TempSave(ElementID) { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); }