Hej
Jag har en önskan, jag vill exekvera ett kommando med hjälp av jscript.
T.ex
reg query HKLM\SOFTWARE\Test
Detta kommando kommer ge värdet:
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Test
value REG_SZ 1
Jag vill få möjligheten att sortera ut datan, så jag bara får ut värdet 1.
Har för mig att jag måste använda mig av:
Enumirate
WshShell.Exec
och
Regular expresions.
Men vet inte hur jag ska få dem att arbeta tillsammans.
Några tips ?
// Micke
colioneMedlem sedan juni 20014 421 inlägg Såhär kanske:
JS:
var strRes="";
var oShell=new ActiveXObject("WScript.Shell");
try {
strRes=oShell.RegRead("HKLM\\SOFTWARE\\Test\\foo");
}
catch (e) {
strRes="Fel: "+e.description+"\nFelkod: "+e.number;
}
finally {
oShell.PopUp(strRes);
}
På ett register som ser ut såhär:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Test]
"foo"="3"
Det går att göra som du vill också, men det är lite jobbigare. Det går även att lösa med wmi, med fördelen att du kan querya en annan dator på nätverket också om det skulle behövas. :)
Dock är detta en snabb och simpel lösning med lite felhantering.
Hej colione
Nu använde jag reg query som ett exempel, det jag igentligen ska göra är att hämta information från en setup.exe fil som lämnar ollika typer av "exit code" när den är klar, vill läsa ut exit koderna som körs i cmd. Sedan ska jag skapa ollika if sattser beroende av den data jag får.
Så jag använde bara reg query som ett exempel, vill läsa ut en viss data från ett cmd kommandos utdata.
// Micke
Har yttligare ett exempel.
Vill köra ett "ping" , t.ex:
ping https://www.sunet.se
Då får jag info om vilken ipnr, vilken svarstid jag får etc.
Om jag bara vill få ut ipnr, hur går man till väga då ?
colioneMedlem sedan juni 20014 421 inlägg Men säg det då. :p
Har inte tid att skriva ett till exempel nu, men lite senare till kvällen kke. :)
Edit/ efter ditt ping-inlägg:
Jag har faktiskt skrivit ihop ett sådant exempel, dock i vbscript, som ligger och skräpar nånstans. Det är inte det snyggaste. Men jag kan posta in det här sedan. Det plockar ut nästan all info.
Tjenare
Har lyckats lösa mitt problem. Men kanske inte den lösningen jag var på jakt efter.
Jag ska köra en setup.exe fil, den i sin tur kan ge ollika "exit codes" beroende på hur installationen har gått. Jag vill då ha möjlighet att avbryta installationen eller rycka vissa register nycklar etc.
Jag har använt mig av:
WSHShell.Exec
match
För att "lösa" mitt problem, har ett exempel med kommandot "ping", skapat ett funktion som försöker pinga önskad adress, om jag får svar visas värdet "true", om jag inte fåt något svar visas värdet "false".
function ping(address)
{
var WSHShell = new ActiveXObject("wscript.shell")
var oExec = WSHShell.Exec("ping -n 1 -w 10 " + address)
var oReadExec = oExec.StdOut.ReadAll()
var oCodeValue = oReadExec.match("100% loss")
if(oCodeValue == null)
{
WScript.Echo("True")
}
else
{
WScript.Echo("False")
}
}
// Micke