/ / wget.exe im Batch-Skript, Ergebnis in Variable speichern - Skript, Batch-Datei, cmd.exe

wget.exe im Batch-Skript, Ergebnis in Variable speichern - Skript, Batch-Datei, cmd.exe

Ich habe dieses Stapelskript, um einige Werte zu einem zu verschiebenRaspberryPi, und ich möchte jetzt die Antwort auf eine Variable speichern. Ich möchte dies, da es bis jetzt zwei mögliche Antworten geben wird: eine ist OK und eine ist SCHLAF.

Wenn die SLEEP-Antwort angezeigt wird, möchte ich den folgenden Befehl ausfĂŒhren, um den Computer in den Energiesparmodus zu versetzen:

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Das Batch-Skript sieht folgendermaßen aus:

@echo off


set totalphysicalmemory=
set loadpercentage=
set freephysicalmemory=
set boottime=

for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month% %day% %year%


FOR /F "tokens=2 delims="="" %%A in ("wmic cpu get loadpercentage /value") do SET loadpercentage=%%A


FOR /F "tokens=2 delims="="" %%A in ("wmic ComputerSystem get TotalPhysicalMemory /value") do SET totalphysicalmemory=%%A


FOR /F "tokens=2 delims="="" %%A in ("wmic OS get FreePhysicalMemory /value") do SET freephysicalmemory=%%A


FOR /f %%a in ("WMIC OS GET lastbootuptime ^| find "."") DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%  %DTS:~8,2%:%DTS:~10,2%


c:"Program Files (x86)"GnuWin32binwget.exe "http://192.168.1.40/push.php?loadpercentage=%loadpercentage%&totalphysicalmemory=%totalphysicalmemory%&boottime=%boottime%&freephysicalmemory=%freephysicalmemory%"  > wget.out

Ich habe den Wget kopiert.exe und vier andere DLLs in das System32-Verzeichnis in der Hoffnung, dass ich den Befehl ohne den vollstĂ€ndigen Pfad ausfĂŒhren kann, aber er beschwert sich ĂŒber die libeay32.dll, aber diese DLL existiert im System32-Verzeichnis. Ich weiß nicht, was das Problem ist. aber wenn es eine Möglichkeit gibt, die Antwort in eine Variable zu bekommen, sogar mit dem vollen Pfad zu wgetDa mein Skript im Moment fehlerfrei ist, wird es jetzt alle 5 Minuten ausgefĂŒhrt und funktioniert hervorragend, aber mit der Antwort von RasPi wird nichts erreicht.

Wie kann ich die Ausgabe von wget in eine Variable speichern?

AKTUALISIEREN @LotPings nach dem Versuch deines modifizierten Skripts (https://superuser.com/a/1228066/746701) lĂ€uft das wget.Exe-Programm, macht die Anfrage korrekt (ich habe apache2 access.log ĂŒberprĂŒft), aber es speichert immer noch nicht die Antwort auf diese Variable, Sie können den Fehler ĂŒber die WebResponse-Variable sehen

C:Ovis>wget.bat
freephysicalmemory=10421416
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:Program Files (x86)GnuWin32/etc/wgetrc
--2017-07-09 16:04:56--  http://192.168.1.40/push.php?freephysicalmemory=10421416
Connecting to 192.168.1.40:80... conectat.
Cerere HTTP trimisă, se aƟteaptă răspuns... 200 OK
Dimensiune: 5 [text/html]
Saving to: `push.php@freephysicalmemory=10421416"

100%[==============================================================================>] 5           --.-K/s   in 0s

2017-07-09 16:04:56 (757 KB/s) - `push.php@freephysicalmemory=10421416" saved [5/5]

Environment variable WebResponse not defined

Antworten:

0 fĂŒr Antwort № 1

LotPings zeigte eine Möglichkeit, die Ausgabe eines Programms zu erfassen und setzen Sie es in eine Variable. Eine andere Möglichkeit besteht darin, die Programmausgabe in eine Datei zu schreiben und dann in eine Variable einlesen mit set /p variable_name=. Beispielsweise,

Ihr_WGET_Befehl > wget.out && set / p WebResponse = <wget.out


0 fĂŒr Antwort № 2

Nun aus Ihrem Code ist es klar, dass Sie nach einem Batch sind - kein Bash-Skript.

Ich weiß nicht, ob Sie den Batch alle 5 Minuten ausfĂŒhren möchten.
Also habe ich eine Schleife mit einem Timeout von 300 Sekunden eingebaut.

:: Q:Test201778SU_1226953.cmd
@Echo off
Pushd "C:Program Files (x86)GnuWin32bin"
Set "URL=http://192.168.1.40/push.php?freephysicalmemory"

FOR /F "tokens=2 delims="=" %%A in (
"wmic OS get FreePhysicalMemory /value"
) do SET "freephysicalmemory=%%A
set freephysicalmemory

FOR /F "delims=" %%A in (
" wget.exe  "%URL%=%freephysicalmemory%" "
) do Set "WebResponse=%%A"
Set WebResponse

If /i "%WebResponse%" Equ "SLEEP" (
Echo going to sleep now ....
Rem rundll32.exe powrprof.dll,SetSuspendState 0,1,0
)