Receber parametros do sistema operacional

de que maneira eu posso receber parametros do sistema [color=blue]operacional[/color]?
espero que estejam entendendo o que estou querendo.
ex:
um atalho de um exe;
[color=orange]“C:\Arquivos de programas\VIVO ZAP\VIVO ZAP.exe 2,USUARIO”[/color]

O objetivo é pegar os parâmetros que um programa traz e que o meu deve pegar.
no caso [color=blue]2,USUARIO[/color]

Quais parametros?
Algum deles voce consegue com o System.getProperty()

[quote=Mark_Ameba]Quais parametros?
Algum deles voce consegue com o System.getProperty()[/quote]

coloquei mais informação na pergunta …

Sabe aquele "args" que tem no main? Ele serve para receber tudo o que vier depois do nome do seu programa. Veja:

public class Teste { public void main(String args[]) for (int i = 0; i < args.length; i++) { System.out.println(i + ":" + args[i]); } } }

java Teste Vinicius Godoy de Mendonça

Imprime:
1:Vinicius
2:Godoy
3:de
4:Mendonça

ou:

java -Dteste=“teste”

System.out.println(System.getProperty(teste));

ou algo parecido com isso :wink:

Hmm… mas voce quer pegar os parametros de programas que não sou seus? Ou apenas os passados como argumentos pro seu jar?

Se for é o que o ViniGodoy disse.

Mas pra vasculhar já não tenho idéia.

o método getenv é deprecated, porém:

	public static void main(String[] args) {
		
		System.out.println(System.getenv("path"));
		
	}

saida:
C:/Arquivos de programas/Java/jdk1.5.0_22/bin/…/jre/bin/client;C:/Arquivos de programas/Java/jdk1.5.0_22/bin/…/jre/bin;c:\ruby\bin;C:\Arquivos de programas\Java\jdk1.5.0_22\bin;C:\AWB\maven-2.0.4\bin;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Arquivos de programas\Java\jdk1.5.0_22\bin;C:\AWB\maven-2.0.4\bin

e etc e tal

caso seja isso que vc queira :wink:

getenv(String name)
Deprecated. The preferred way to extract system-dependent information is the system properties of the java.lang.System.getProperty methods and the corresponding getTypeName methods of the Boolean, Integer, and Long primitive types. For example:

     String classPath = System.getProperty("java.class.path",".");
 

     if (Boolean.getBoolean("myapp.exper.mode"))
         enableExpertCommands();

@ http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html

[color=red]Tem muita coisa que eu ñ sei em java ainda [/color][color=blue]Coloquei no avançado pq fala sobre arquivos [/color]
[size=16]o cara aqui da empresa que me passa esses atividades que eles usam por aqui. O problema é que só eu que estuda o java ele trabalha com VB e VB.Net entao temcoisa que ñ tem como me passar[/size]
Deixa te perguntar uma parada …
se eu fizer assim…

String classPath = System.getProperty("java.class.path","."); 

o parametro que eu quero que vem depois do exe vai ser armazenado no classPath?
O System.getProperty tudo bem mais b;[/b] estranho… n sei se é isso
estou com dificuldade para entender o que farei pra pegar esses dados

exemplo

o cliente vai executar um programa Usuario.exe
quem criou o programa passa informação atravez do executável colocando ele depois do [color=red]exe[/color]
assim
“[color=orange]C:\InterageSE\Usuarios[/color].[color=red]exe[/color] [color=green]2,USUARIO[/color]” //[color=silver]isso da pra ver em propriedades do execultavel[/color]

imagine que 2 é o código e o USUARIO é o login de usuário
nesse programa ele pode executar o meu.
dessa forma o meu programa pega essa informação passada depois do [color=red]exe[/color] [color=yellow]o que eu quero
[/color]
isso é pra pegar o usuário, do sistema da empresa, o programa vai ser dentro dele(do sis da empresa).
é em delphi e o meu será em java.
para o usuário ñ ter que loga novamente no meu.

[quote=ViniGodoy]Sabe aquele "args" que tem no main? Ele serve para receber tudo o que vier depois do nome do seu programa. Veja:

public class Teste { public void main(String args[]) for (int i = 0; i < args.length; i++) { System.out.println(i + ":" + args[i]); } } }
[/quote]
entendo mais ñ pegou seu código

for (int i = 0; i < args.length; i++) { System.out.println(i + ":" + args[i]); }

estou tentando intender o post do ceb10n pode ter algo mais ñ estou compreendendo ñ sei se estou com a mente ferrada já …

Seguinte:

em applet, eu seu como passar via html parametros…

agora no seu caso, eu imagino 3 situações

1 - vai em run as -> run configuration
e em arguments vc adiciona os argumentos
ai vc usa o esquema que o vinigodoy falou

ps: isso é pelo eclipse

2 - vai via console igual o vinigodoy falou
java seuprog parametros

3 - já q é login, cria um login oras, tipo antes de entrar no prog, tem q digitar usuario e senha…

nao sei se entendi bem a sua duvida, maaas…

No windows não existe o conceito de “linha de comando” como existe no Linux e Unix’s

No windows:
Uma vez chamado um programa, não é possível recuperar em lugar nenhum os parâmetros passados ao programa, exceto dentro do próprio programa, por exemplo:

notepad.exe c:\teste.txt

Não há lugar onde descobrir que foi passado ao NOTEPAD.EXE o parametro c:\teste.txt

No Linux e Unix’s:
Enquanto o programa estiver em execução é possível ver em diversos lugares a linha de comando utilizada para chamar o programa:

vi /home/teste.txt

Um dos exemplos de como descobrir a linha de comando seria:

ps afx

Veja:

24602 pts/2    Sl+    0:00      \_ vi teste.txt
  • 24602 é o PID
  • pts/2 é o device que identifica o terminal
  • Sl+ é o estado do processo (sleep)
  • 0:00 é o tempo de CPU que este processo já consumiu
  • vi teste.txt é a linha de comando.

Uma outra forma de descobrir, no linux, se voce souber o PID (24602 no exemplo acima), é rodar o comando abaixo:

cat /proc/24602/cmdline

Isto vai printar na tela apenas a linha de comando do PID 24602.

Por estas coisinha e muitas outra abandonei para sempre o Windows há 5 anos.

[]s

Kemper