Mausclick mit PowerShell in Bat Datei möglich?

1 Antwort

Wenn Du das Positionieren des Cursors meinst....

demo.cmd

@echo off
chcp 65001 >nul & rem Umlaute  richtig darstellen.
cls
  rem  Gänsefüßchen im PSCode müssen  bei dieser Variante  verdreifacht werden....
Powershell -c "&{[console] | Get-Member -Static}" 


echo Das sind die Methoden und Einstellungen auf die man mit [console]::Begriff zugreifen kann.
echo drücke eine Taste um den Begin der Ausgabe zu gehen...
pause >nul
  rem Cursor  an den Anfang...
Powershell -c "&{[console]::CursorLeft=0 ; [console]::CursorTop=0 }" 
 rem und  dort schreibt ....
pause

... das sollte man nicht Exzessiv betreiben.

Powershell braucht immer eine Ladezeit und Zeit für's compilieren und Ausführen.

Die Verwendung von Powershell-Einzeilern sollte man wegen dieses gewaltigen Wasserkopfes im Verhältnis zum Code auf ein Minimum begrenzen

Es ist zu überlegen ob man nicht alles in Powershell erledigt...

...oder eine Batch-Powershell-Hybrid nutzt:

Hybriddemo.cmd

<# : Batch Abschnitt ,Batch sieht in dieser Zeile die Eingabe aus der Datei #, Powershell sieht den Ebegin eines Kommentars. 
@echo off 
if "%~1" neq "" goto :run
chcp 65001 >nul
echo das ist die Batch...
echo Hilfe: Ziehe  Dateien auf  die die Batch "%~nx0"...
echo ...oder ach nicht 
echo Die Dateinamen werden an das Powershellscript weitegeleitet.
timeout 2 >nul
:run
color 1f
cls
  rem Diese Zeile  nicht veränden! Startet Powershell ohne Rechtevergabe und übergibt Parameter über die Pipe
(for %%I in ("%~f0" %*) do @echo:%%~I)|powershell -noprofile "[Array]$argv = $input|?{$_}; iex (${%~f0} | out-string)"


pause
exit /b
: Ende Batch  
: Ab der nächsten Zeile  beginnt das eigentliche PowershellScript, da kannst Du Powershellcode einfügen wie es Dier beliebt... #>




#democode 
"Jetzt bin ich in der Powershell"
$argv |%{ "`$argv[{0}]: $_" -f $i++};$i=$Null;
$ScriptName=$argv[0]
  #alle übergebenen Parameter außer $argv[0] der Variable Params zuweisen:
$Params=$argv|Select -Skip 1
""
"Name der Hybridbatch:"
$ScriptName
  #Params ist ein Array. Einzelne Elemente können über $Params[IndexNummer] aufgerufen werden.
if ($Params) {
    ""
    "an die Batch uebergebene Parameter:"
    $Params
}
"
"


[console]::CursorLeft=0
[console]::CursorTop=0 


Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
nimeineb 
Fragesteller
 15.10.2019, 17:08

wow.... Danke aber das ist zu kompliziert für mich lol.

Ich wollte einfach nur in diesem winzigen code in der 3 - idk Zeile festlegen, dass die maus auf position 0,0 klickt 😅:

1: echo off

2: start /B chrome https://www.youtube.com/

3:

4: timeout 13

5: taskkill /f /im chrome.exe >nul 2>nul

0
Erzesel  15.10.2019, 17:19
@nimeineb

Das geht ganicht mit Batch.

Man kann nicht aus der Konsole auf ein anderes Fenster Klicks simulieren.

Dazu musst Du Dich nach einem Programm wie Autoit oder dergleichen umschauen....

0