Datei per Batch ausführen und Makro starten
Hallo allerseits,
ich habe ein Problem und das geht so:
Ich möchte per Batch alle im Variablen Ordner befindlichen zum Bsp. PDF Dateien ausführen, aber folgender maßen erste Datei wird ausgeführt, danach läuft Makro ab und schließt das Programm. Die zweite Datei wird ausgeführt und wieder das Makro usw.
Ich habe es mit folgende Batch probiert
for %%f in (*_*.pdf) do @for /f "delims=_" %%n in (' %%~f') do @echo move /y "%%~"
c:\Makro\Makro.exe
Die erste Datei wird ausgeführt, nach dem ich das Programm manuell schließe wird die zweite Datei ausgeführt usw. bis es zur der letzten datei kommt, wen ich die schließe dann läuft erst das Makro einmal ab aber das Programm ist in dem Moment schon geschlossen.
Weiß jemand wie man die Batch umschreiben muss das funktioniert? Im Prinzip Datei ausführen, Makro ausführen usw.
Ich bedanke mich im Voraus
P.S Frohe Ostern
ich habe ein Problem und das geht so:
Ich möchte per Batch alle im Variablen Ordner befindlichen zum Bsp. PDF Dateien ausführen, aber folgender maßen erste Datei wird ausgeführt, danach läuft Makro ab und schließt das Programm. Die zweite Datei wird ausgeführt und wieder das Makro usw.
Ich habe es mit folgende Batch probiert
for %%f in (*_*.pdf) do @for /f "delims=_" %%n in (' %%~f') do @echo move /y "%%~"
c:\Makro\Makro.exe
Die erste Datei wird ausgeführt, nach dem ich das Programm manuell schließe wird die zweite Datei ausgeführt usw. bis es zur der letzten datei kommt, wen ich die schließe dann läuft erst das Makro einmal ab aber das Programm ist in dem Moment schon geschlossen.
Weiß jemand wie man die Batch umschreiben muss das funktioniert? Im Prinzip Datei ausführen, Makro ausführen usw.
Ich bedanke mich im Voraus
P.S Frohe Ostern
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139794
Url: https://administrator.de/forum/datei-per-batch-ausfuehren-und-makro-starten-139794.html
Ausgedruckt am: 25.12.2024 um 06:12 Uhr
23 Kommentare
Neuester Kommentar
Hallo Spidi-25!
Ohne jetzt hinterfragen zu wollen, was Du mit "Datei ausführen" oder mit Deinem Batchansatz sonst noch meinst (und daher auch - fast - ohne den Hinweis, dass ein "
Grüße
bastla
Ohne jetzt hinterfragen zu wollen, was Du mit "Datei ausführen" oder mit Deinem Batchansatz sonst noch meinst (und daher auch - fast - ohne den Hinweis, dass ein "
move
" in einem Batch kein "/y" benötigt ):@echo off & setlocla
for %%f in (*_*.pdf) do for /f "delims=_" %%n in (' %%~f') do (
echo move "%%~"
c:\Makro\Makro.exe
)
bastla
Hallo Spidi-25!
Ansonsten wäre es sinnvoll, einmal genau zu erklären, was die ganze Aktion bewirken soll ...
Grüße
bastla
Die Datei wird ausgeführt aber das Makro nicht,
Leider ist mir nicht so ganz klar, was Du unter "Datei wird ausgeführt" verstehst - eigentlich kann damit nur das Öffnen der jeweiligen ".pdf"-Datei durch das dafür im System festgelegte Standardprogramm gemeint sein - falls ja, könnte es so gehen:@echo off & setlocal
set "Ext=.pdf"
set Prog=
for /f "tokens=2 delims==" %%a in ('assoc %Ext% 2^>nul') do for /f "tokens=2 delims==" %%t in ('ftype %%a 2^>nul') do for %%p in (%%t) do if not defined Prog set "Prog=%%~p"
if not defined Prog echo Kein Programm für %Ext% festgelegt! & goto :eof
for %%f in (*_*.pdf) do (
start "%Prog%" "%%f"
c:\Makro\Makro.exe
)
Grüße
bastla
Moin Spidi-25,
ja, es ist möglich. Häng noch eine Zeile mehr dran mit einem MOVE (falls es auf EINEM Laufwerk stattfindet oder einem COPY/DEL von D:\Export ins aktuelle Verzeichnis, falls es auf unterschiedlichen Laufwerken stattfindet.
Du kannst diese Zeile auch nach der FOR-Anweisung schreiben - kann ja keinen Unterschied machen.
Bist du dir wirklich sicher, dass du dir auch sinnvolle Beispiele zur Automatisierung von Abläufen zum Batch-Üben ausgesucht hast?
Einen Batch aus dem Filecommander in einem dort angezeigten Verzeichnis aufrufen, damit über Win32 ein PDF-Verarbeitungskrams gefolgt von einer XY-Makro-Appz aufgerufen wird, damit du danach alles im Filecommander siehst.... ööhm.
Ich weiss, das war ja nicht deine Frage... aber spielerisch elegant sieht es nicht aus.
Grüße
Biber
ja, es ist möglich. Häng noch eine Zeile mehr dran mit einem MOVE (falls es auf EINEM Laufwerk stattfindet oder einem COPY/DEL von D:\Export ins aktuelle Verzeichnis, falls es auf unterschiedlichen Laufwerken stattfindet.
Du kannst diese Zeile auch nach der FOR-Anweisung schreiben - kann ja keinen Unterschied machen.
Bist du dir wirklich sicher, dass du dir auch sinnvolle Beispiele zur Automatisierung von Abläufen zum Batch-Üben ausgesucht hast?
Einen Batch aus dem Filecommander in einem dort angezeigten Verzeichnis aufrufen, damit über Win32 ein PDF-Verarbeitungskrams gefolgt von einer XY-Makro-Appz aufgerufen wird, damit du danach alles im Filecommander siehst.... ööhm.
Ich weiss, das war ja nicht deine Frage... aber spielerisch elegant sieht es nicht aus.
Grüße
Biber
Hallo Spidi-25!
oder einfach das "große Aufräumen" mit
Grüße
bastla
Gibt es eine Möglichkeit mit move D:\Export\*.* alle Daten vom unter Ordner mit der gleichen Aktion zu verschieben ...
Dazu brauchst Du eine Schleife der Artfor /f "delims=" %%i in ('dir /s /b /a-d D:\Export\*.*') do move "%%i"
... und alle unter Ordner von D:\Export\ löschen?
... und dafür entweder eine weitere Schleife (wenn "D:\Export" erhalten bleiben soll)for /d %%i in (D:\Export\*.*) do rd /s /q "%%i"
rd /s /q D:\Export
bastla
Hallo Spidi-25!
Kurzfassung:
Wenn Du Anführungszeichen verwendest, dann wird der Teil zwischen den ersten beiden Anführungszeichen als Titel interpretiert (natürlich funktioniert daher auch "").
Wenn der (tatsächliche - siehe W7-"Kunststücke") Pfad Leerzeichen enthält, muss zumindest der entsprechende Teilpfad unter Anführungszeichen stehen - lesbarer ist für mich die letzte von Dir dargestellte Schreibweise (also Anführungszeichen am Anfang und Ende des gesamten Pfades).
Wenn der Pfad keine Leerzeichen enthält, kannst Du ihn trotzdem unter Anführungszeichen setzen (was ich prinzipiell mache - damit bleibt ein Batch leichter veränderbar); die eigentlich einzige Situation, in welcher sich daraus ein Nebeneffekt ergibt (nämlich bei "
Aus allen diesen Überlegungen ergab sich mein oben genannter Vorschlag (bei dem ich allenfalls der Text für den Fenstertitel weglassen würde - war hier aber als Demo gedacht) bzw Deine Varianten 1 und 2 ...
5 funktioniert nicht, weil das Programm als Titel und die Datei in "%%f" als Programm betrachtet werden.
Grüße
bastla
P.S.: Ob es genügt, den Programmnamen ohne Pfad anzugeben, hängt nicht vom BS ab, sondern von der Frage, ob das Programm auch ohne Pfadangabe gefunden wird - dies ist der Fall, wenn das Programm im zum Zeitpunkt des Batchlaufes aktuellen Verzeichnis (= in
Kurzfassung:
Wenn Du Anführungszeichen verwendest, dann wird der Teil zwischen den ersten beiden Anführungszeichen als Titel interpretiert (natürlich funktioniert daher auch "").
Wenn der (tatsächliche - siehe W7-"Kunststücke") Pfad Leerzeichen enthält, muss zumindest der entsprechende Teilpfad unter Anführungszeichen stehen - lesbarer ist für mich die letzte von Dir dargestellte Schreibweise (also Anführungszeichen am Anfang und Ende des gesamten Pfades).
Wenn der Pfad keine Leerzeichen enthält, kannst Du ihn trotzdem unter Anführungszeichen setzen (was ich prinzipiell mache - damit bleibt ein Batch leichter veränderbar); die eigentlich einzige Situation, in welcher sich daraus ein Nebeneffekt ergibt (nämlich bei "
start
") haben wir gerade abgehandelt.Aus allen diesen Überlegungen ergab sich mein oben genannter Vorschlag (bei dem ich allenfalls der Text für den Fenstertitel weglassen würde - war hier aber als Demo gedacht) bzw Deine Varianten 1 und 2 ...
was ist mit Zeile 4 und 5?
4 funktioniert nur, wenn Pfad und Programmname keine Leerzeichen enthalten.5 funktioniert nicht, weil das Programm als Titel und die Datei in "%%f" als Programm betrachtet werden.
Grüße
bastla
P.S.: Ob es genügt, den Programmnamen ohne Pfad anzugeben, hängt nicht vom BS ab, sondern von der Frage, ob das Programm auch ohne Pfadangabe gefunden wird - dies ist der Fall, wenn das Programm im zum Zeitpunkt des Batchlaufes aktuellen Verzeichnis (= in
%cd%
) liegt oder das Programmverzeichnis in %path%
enthalten ist ...