Printing the Windows environment variables and their values to System Console (and file) using Java

February 16th, 2012.This post has 172 views




In the following Java tool, I have demonstrated two things:

  • How to print all the Windows Variables using Java runtime onto the System Console. (You can modify this code to print those variables and their values to a file. See our previous tutorial for some help on printing String to file)
  • How to get the value of a specific windows variable using Java runtime

This program is capable of identifying few variations of Windows OS. The following OS are supported by this code:

  • Windows NT
  • Windows 2000
  • Windows XP
  • Windows 9* (e.g. Windows 95, Windows 98

Here is the source code:

package com.kushal.tools;

/**
 * @Author Kushal Paudyal
 * Created on 2012-01-30
 * Last Modified on 2012-01-30
 *
 * Tool to print the windows environment variables.
 * Can also be used to print the value of a specific
 * windows variable.
 */
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Properties;

public class WindowsEnvironmentVariablesPrinter {

	public static void main(String[] args) {

		Properties prop = WindowsEnvironmentVariablesPrinter
				.getEnvironmentVariables();
		/**
		 * Print out all the properties to System Console
		 */
		prop.list(System.out);

		/**
		 * Print the value of a specific variable.
		 * In this case, we will be printing the value of "TEMP"
		 * variable.
		 */
		System.out.println("\n\nValue of varible TEMP is : "
				+ prop.getProperty("TEMP"));
	}

	public static Properties getEnvironmentVariables() {
		Process myProcess = null;
		Properties envVars = new Properties();
		try {
			/**Get a runtime**/
			Runtime runtime = Runtime.getRuntime();

			/**Get the String value of operating system name*/
			String operatingSystem = System.getProperty("os.name").toLowerCase();
			/**
			 * If it is Windows 9 Operating System, execute the command
			 * 'command.com /c set'
			 */
			if (operatingSystem.indexOf("windows 9") > -1) {
				myProcess = runtime.exec("command.com /c set");
			}
			/**
			 * If it is Windows NT or Windows 2000 or Windows XP, execute the command
			 * 'cmd.exe /c set'
			 */
			else if ((operatingSystem.indexOf("nt") > -1)
					|| (operatingSystem.indexOf("windows 2000") > -1)
					|| (operatingSystem.indexOf("windows xp") > -1)) {
				myProcess = runtime.exec("cmd.exe /c set");
			}
			/**
			 * If does not match any of those, just run the command
			 * 'env'
			 */
			else {
				myProcess = runtime.exec("env");
			}

			/**
			 * The following block reads the output and creates a
			 * key value pair for the environment variables.
			 */
			BufferedReader br = new BufferedReader(new InputStreamReader(
					myProcess.getInputStream()));
			String line;
			while ((line = br.readLine()) != null) {
				int idx = line.indexOf('=');
				String key = line.substring(0, idx);
				String value = line.substring(idx + 1);
				envVars.setProperty(key, value);
			}
		} catch (Throwable e) {
			e.printStackTrace();
		}
		return envVars;
	}

}

The output of this program when I ran this on my PC:

-- listing properties --
UATDATA=C:\WINXP\system32\CCM\UATData\D9F8C39...
CLIENTNAME=Console
PROCESSOR_ARCHITECTURE=x86
NUT_SUFFIXED_SEARCHING=1
TSMPATH=C:\Program Files\ThinkPad\UltraNav Ut...
FP_NO_HOST_CHECK=NO
RATL_RTHOME=C:\Program Files\Rational\Rational Test
DB2TEMPDIR=C:\PROGRA~1\IBM\SQLLIB\
ANT_HOME=C:\build2\tools\apache-ant-1.7.1
TVTPYDIR=C:\Program Files\Common Files\Lenovo\...
MQ_JAVA_INSTALL_PATH=C:\Program Files\IBM\WebSphere MQ\Java
TMP=C:\DOCUME~1\billgates\LOCALS~1\Temp
TVT=C:\Program Files\Lenovo
CLEARCASE_PRIMARY_GROUP=NWIE\UG$ICAClearUsers
COMPUTERNAME=BILLGATESCOMPUTER
M2=C:\maven\bin
OS=Windows_NT
IBMLDAP_ALTHOME=C:\Program Files\Rational\common\codeset
RR=C:\Program Files\Lenovo\Rescue and Re...
PROMPT=$P$G
notestmp1=C:\DOCUME~1\billgates\LOCALS~1\Temp\not...
SystemDrive=C:
TPTP_AC_HOME=C:\Program Files\IBM\SDPShared\plugin...
HOMEDRIVE=C:
LOGONSERVER=\\PMM0201
PROCESSOR_IDENTIFIER=x86 Family 6 Model 37 Stepping 5, Gen...
ProgramFiles=C:\Program Files
DB2INSTANCE=DB2
NUMBER_OF_PROCESSORS=4
TEMP=C:\DOCUME~1\billgates\LOCALS~1\Temp
USERDOMAIN=MSOFT
M2_HOME=C:\maven
INCLUDE=C:\PROGRA~1\IBM\SQLLIB\INCLUDE;C:\PRO...
NUTSUFFIX=1
HOME=C:\Documents and Settings\billgates
MQ_JAVA_DATA_PATH=C:\Program Files\IBM\WebSphere MQ
TMPDIR=C:\DOCUME~1\billgates\LOCALS~1\Temp
SMA=C:\Program Files\ThinkVantage\SMA\
IBM_JAVA_COMMAND_LINE=C:\Program Files\IBM\SDP\jdk\jre\bin\...
PROCESSOR_LEVEL=6
USERDNSDOMAIN=NWIE.NET
VSEDEFLOGDIR=C:\Documents and Settings\All Users\A...
Path=C:\Program Files\IBM\WebSphere MQ\Jav...
SESSIONNAME=Console
USERNAME=billgates
LIB=;C:\PROGRA~1\IBM\SQLLIB\LIB
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JS...
DEFLOGDIR=C:\Documents and Settings\All Users\A...
ComSpec=C:\WINXP\system32\cmd.exe
SystemRoot=C:\WINXP
TVTCOMMON=C:\Program Files\Common Files\Lenovo
windir=C:\WINXP
PROBEKIT_HOME=C:\Program Files\IBM\SDPShared\plugin...
PROCESSOR_REVISION=2505
USERPROFILE=C:\Documents and Settings\billgates
CommonProgramFiles=C:\Program Files\Common Files
APPDATA=C:\Documents and Settings\billgates\App...
HOMEPATH=\Documents and Settings\billgates
TISDIR=C:\Program Files\Rational\common
JAVA_HOME=C:\Program Files\IBM\SDP\runtimes\bas...
ALLUSERSPROFILE=C:\Documents and Settings\All Users
CLASSPATH=C:\Program Files\IBM\WebSphere MQ\Jav...
SWSHARE=C:\SWSHARE

Value of varible TEMP is : C:\DOCUME~1\billgates\LOCALS~1\Temp

Related Java Blog Posts


    Sanjaal.com is owned and maintained by Sanjaal Corps, Nepal. The company offers Webhosting and Domain Registration Services, IT Solutions and Business Analysis. Sanjaal.com website features H1B Visa Information, Entertainment Portal, Link Directory Service, Free Articles, Free Open Source Tutorials on Java and J2EE Platform, Digital Photography, High Resolution Picture Gallery and Free Reliable Image Hosting Services. Future plan includes Open Source Software Development Portal, Technical Solutions and Customizable Movie and Music Arena. We would be introducing data backup, data recovery, data hosting and voip solutions. Stay free from phishing – our website does not ask for your credit card and banking information. Happy Surfing!

    Blog Widget by LinkWithin
    Share

    Your Ad Here

    Trackback URI | Comments RSS

    Leave a Reply

    You must be logged in to post a comment.