Win. 11: BAT Datei und Variablen

ChrigiGee

Newbie
Registriert
Okt. 2023
Beiträge
3
Hallo und Guten Abend,

Ich möchte gerne für ein paar Homepage Applikationen (nativefier) eine allgemeine
UpDate Routine Bat Datei erstellen.

So ganz funktioniert es leider nicht.

Code:
cd %~dp0

For /F %%i in ('dir /B *.exe') do set Datei=%%~ni

nativefier --upgrade %Datei%

Da ich die Bat Datei gerne einfach in das Verzeichnis einer neuen Anwendung kopieren möchte und nicht noch lange
Dateinamen, in die Bat schreiben möchte, dachte ich, das sollte als Variable möglich sein.

Letzthin Versuch, es werden alle Dateien aufgeführt und dann mit der letzten Datei versucht das UpDate anstossen zu können.
Letzte Datei blabla.dll.

Wenn mal die exe genommen wird, wird bedauerlicherweise wie bei dose üblich ein Leerschlag im Dateinamen nicht korrekt verarbeitet.
'Das ist meine Datei.exe' würde somit Variable "Das" heissen.

Was ich gerne hätte bewerkstelligen wollen, dass er mir den exe Namen in einer Variable ablegt, inkl. ext 'exe'
Wenn ich so doof war und einen Dateinamen mit Leerschlag verwendet hatte, sollte er auch das berücksichtigen.

Ich stehe etwas auf dem Schlauch, und habe schon so viel durchgelesen zum Thema BAT und Variablen,
sodass mir der Kopf raucht. Aber weitergekommen bin ich enttäuschenderweise seit Wochen nicht.

Vielleicht kann mir jemand von Euch hier die Tomaten vor den Augen wegnehmen.
Oder einen harten Wink mit dem Lattenzaun in die richtige Richtung geben.

Ich bin für jede Hilfe dankbar.

Ich wünsche Euch allen einen wunderschönen Sonntagabend oder entsprechendes, wenn ihr es lest.

Christian
 
Ach Leute... :rolleyes:


Hallo, @ChrigiGee.

Probier mal das:

Code:
cd %~dp0

For /F "delims=" %%i in ('dir /B *.exe') do set Datei="%%i"

nativefier --upgrade %Datei%

  • Mit %%i statt %%~ni bleibt die Endung dran
  • "delims=" überschreibt die Standard-Parameter-Delimiter TAB und Space durch... gar keine. Der Teil nach einem Leerzeichen im Dateinamen wird damit also nicht mehr als neuer Parameter interpretiert, sondern komplett verwendet.
  • Hab mal noch "" um die Datei gemacht
Ergebnis ist dann z.B.:

Code:
set Datei="One Two Three.exe"
 
Zuletzt bearbeitet:
Hallo meine Herren,

Es gibt genau 2 Gründe, weshalb BAT.

  • Ich kenne PowerShell nahezu gar nicht.
  • Ich habe noch einiges im Hinterkopf versteckt aus meiner DOS zeit,
heisst, ich komme mit der BAT wohl eher durch das ganze als wenn ich mich noch
in PS einarbeiten müsste.

Liebe Grüsse und herzlichen Dank für die rasche Hilfe.
Christian
 
  • Gefällt mir
Reaktionen: Katzenjoghurt
ChrigiGee schrieb:
heisst, ich komme mit der BAT wohl eher durch das ganze als wenn ich mich noch
in PS einarbeiten müsste.
Mag sein. Wenn du nie mehr Batch-Dateien brauchst, mag es auch nichts bringen, sich mal die PowerShell anzuschauen.
Das ganze ist aber halt auch gleichzeitig ein Totschlagargument, sich gar nicht mit neuen Dingen zu beschäftigen.

Mir ist es egal, für was du dich entscheidest.

In PowerShell könnte das so aussehen:
Code:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$result = Get-Childitem –Path $scriptPath\*.exe
nativefier --upgrade $result[-1].Name
Ich habe ehrlich gesagt noch nicht ganz verstanden, warum es nur um die letzte Datei geht...

für alle Dateien
Code:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$files = Get-Childitem –Path $scriptPath\*.exe
foreach ($file in $files)
{
    nativefier --upgrade $file.Name
}

Wenn alle in einem Aufruf übergeben werden sollen, dann sieht das nochmal anders aus, Sekunde...
Code:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$filenames = (Get-Childitem –Path $scriptPath\*.exe).Name
nativefier --upgrade $filenames
oder so:
Code:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$filenames = (Get-Childitem –Path $scriptPath\*.exe).Name
nativefier --upgrade ($filenames -join " ")
Geht sicher auch noch alles schöner.

Klar, kann man alles auch mit Batch machen.
 
Zuletzt bearbeitet:
Anhand der exe Datei kann nativefier erkennen, um welche App es sich handelt.
den der Rest ist nur was nativefier zum Laufen benötigt. Ergibt eine Portable Anwendung.

nativefier ist ähnlich "web to exe".
Anhand der exe Datei erkennt nativefier um welche Internetseite es geht, irgendwo in den Dateien welche da hinterlegt sind.

Ich bin zu Faul jedes Mal den Broswer zu öffnen, wenn ich immer wiederkehrend eine bestimmte Seite anschaue. Nehmen wir die Bild Zeitung.

Nimm eine Software von heute, Kapier die auf nen Memory Stick und gehe nach Hause und versuche z.b. Office zu starten.

Gehe in die DOSe Zeit, Kapier Word für DOS, auf den gleichen Memory Stick gehe nach Hause und Word läuft.
Heute nennen wir das grossartig USB oder Stickware. Klappte früher schon.

Und ich komme sehr viel rascher zum Ergebnis mit ner Bat, weil ich damals alles auf Bat basierend für meinen Dad gemacht hatte als kleiner drei Käse hoch.

Nicht, dass ich PowerShell nicht gebrauchen würde oder mich einarbeiten. Aber wenn ich eine Lösung aus dem Ärmel zaubern muss, bin ich bei BAT immer noch schneller als momentan noch bei PowerShell.

PowerShell ist für mich Office 2021

sorry, ich glaube, ich bin etwas vom Thema abgekommen. Aber ich komme leider noch aus dieser Zeit.
und mit 50 geht das Lernen nicht mehr so schnell wie mit 20. Und das merke ich heute auch.

Herzliche Grüsse
Christian
 
Zurück
Oben