spidi-25
Goto Top

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

Content-Key: 139794

Url: https://administrator.de/contentid/139794

Ausgedruckt am: 29.03.2024 um 01:03 Uhr

Mitglied: bastla
bastla 03.04.2010 um 14:54:05 Uhr
Goto Top
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 "move" in einem Batch kein "/y" benötigt face-wink):
@echo off & setlocla
for %%f in (*_*.pdf) do for /f "delims=_" %%n in (' %%~f') do (  
    echo move "%%~"  
    c:\Makro\Makro.exe
)
Grüße
bastla
Mitglied: Spidi-25
Spidi-25 03.04.2010 um 15:43:29 Uhr
Goto Top
Hallo bastla
danke für die schnelle Antwort

bei setlocla ist ein Fehler

und es werden nur die Dateien ausgeführt aber kein makro.exe
Mitglied: bastla
bastla 03.04.2010 um 16:15:25 Uhr
Goto Top
Hallo Spidi-25!

Sorry und neuer Versuch:
@echo off & setlocal
for %%f in (*_*.pdf) do (
    for /f "delims=_" %%n in (' %%~f') do echo move "%%~"  
    c:\Makro\Makro.exe
)
Grüße
bastla
Mitglied: Spidi-25
Spidi-25 04.04.2010 um 00:19:28 Uhr
Goto Top
Hallo bastla

der Code Läuft immer noch nicht. Die Datei wird ausgeführt aber das Makro nicht, erst wenn ich das Programm schließe wird das Makro ausgeführt. Wen das Makro abgelaufen ist, wird die Zweite Datei ausgeführt usw. Sollte aber wie folgt ablaufen Datei ausführen > Makro ausführen, Makro Läuft ab und schließt das Programm. Nächste Datei wir ausgeführt usw.

Vielleicht schaffen wir das noch
THX
Mitglied: bastla
bastla 04.04.2010 um 00:49:29 Uhr
Goto Top
Hallo Spidi-25!
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 
)
Ansonsten wäre es sinnvoll, einmal genau zu erklären, was die ganze Aktion bewirken soll ...

Grüße
bastla
Mitglied: Spidi-25
Spidi-25 04.04.2010 um 01:31:13 Uhr
Goto Top
Tut mir Leid aber der Code passt auch nicht ganz, es werden jetzt alle Dateien ausgeführt und auch das Makro so oft so viele Dateien verfügbar sind.

Sollte aber Datei Öffnen danach Makro öffnen und warten bis Makro das Programm schließt danach die nächste datei.

Mit der CMD möchte ich folgendes erreichen das was ich momentan manuell mache

1. rechts klick auf Datei "öffnen" (Datei öffnet sich mit dem Standard Programm)
2. ich doppelklicke auf "makro.exe" die bedient das Programm und macht einen automatischen Export und schließt das programm

3. erneut klicke ich die nächste Datei an (Datei öffnet sich mit dem Standard Programm)
4.(wie unter 2)
5. usw.

bei 20 Dateien sitzt man halt ne weile.
Mitglied: Xpl0iT
Xpl0iT 04.04.2010 um 02:03:52 Uhr
Goto Top
wie wäre es mit

@echo off
dateiname.pdf
makro.exe
kill standartanwendung.exe

das ganze dann in einer schleife, müsstest jedoch zwischen den befehlen etwas zeit zum ausführen lassen
Mitglied: bastla
bastla 04.04.2010 um 02:13:01 Uhr
Goto Top
Hallo Spidi-25!

Wenn ohnehin das Makro das Programm schließt, könntest Du noch zur Sicherheit
start /w c:\Makro\Makro.exe
verwenden ...

Grüße
bastla
Mitglied: Spidi-25
Spidi-25 04.04.2010 um 02:33:05 Uhr
Goto Top
Zitat von @Xpl0iT:
wie wäre es mit


@echo off
dateiname.pdf

das sind mit unter zwischen 10 und 50 Dateien wie kann ich wie kann ich die Dateiname.pdf eingeben?

dieser Code wahr nicht schlecht der hat gewartet bis das Programm geschlossen wurde bevor es die nächste Datei geöffnet hatte, nur hat es das Makro zwischen den nicht gestartet.
@echo off & setlocal
for %%f in (*_*.stp) do (
for /f "delims=_" %%n in (' %%~f') do echo move "%%~"
C:\Makro\Makro.exe
)
Mitglied: Spidi-25
Spidi-25 04.04.2010 um 02:43:35 Uhr
Goto Top
Gibt es de keine Möglichkeit


CMD Ausführen

erste Datei wird geöffnet C:\Makro\makro.exe wird geöffnet. makro.exe läuft ab und schließt das Programm erst jetzt soll die nächste Datei geöffnet werden, danach wieder das Makro.
Mitglied: bastla
bastla 04.04.2010 um 10:43:52 Uhr
Goto Top
Hallo Spidi-25!

Nachtrag: Die Zeilen 7 bis 10 hatte ich eigentlich so gemeint:
for %%f in (*_*.pdf) do (
    start "" "%Prog%" "%%f"  
    start /w c:\Makro\Makro.exe 
)
Grüße
bastla
Mitglied: Spidi-25
Spidi-25 05.04.2010 um 02:26:56 Uhr
Goto Top
Jetzt läufst super Danke bastla, bin von dir mittlerweile nichts anderes gewöhnt das die Codes von dir klasse sind.

Die Zeile 2 vom Nachtrag start "" "%Prog%" "%%f" habe ich wieder wie in der zeile 8 verwendet start "%Prog%" "%%f" und jetzt is alles OK

Vielen dank noch mal
Mitglied: Spidi-25
Spidi-25 05.04.2010 um 09:28:58 Uhr
Goto Top
Hallo noch mal

eine frage hätte ich noch

könnte man an diesen Code noch was dranhängen? Und zwar wird die Datei geöffnet wie gewünscht und danach läuft das Makro ab, nur das Makro Macht den Export immer in einen Festen Ordner. In meinem Beispiel nach D:\Export, gibt es eine Möglichkeit am Schluss wen das Makro fertig ist in die CMD was einbauen, damit alle Daten von D:\Export in den Ordner von dem ich über einen Filecommander die CMD starte verschieben?

Danke schon mal im Voraus
Mitglied: bastla
bastla 05.04.2010 um 09:52:36 Uhr
Goto Top
Hallo Spidi-25!

Die zusätzliche Zeile könnte so aussehen:
move D:\Export\*.*
Grüße
bastla
Mitglied: Biber
Biber 05.04.2010 um 10:08:04 Uhr
Goto Top
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
Mitglied: Spidi-25
Spidi-25 05.04.2010 um 13:31:28 Uhr
Goto Top
Danke im voraus

ich konte es nur ansatzweise testen, da ich momentan nich zuhause bin
so bald ich es getstet habe melde ich mich noch einmal.

zum Biber

Ich wechsel mit dem Filecommander in einen Auftragsordner, in dem nur die Auftragsdaten liegen nicht die CMD datei, die befindet sich im Laufwerk C:\windows.

Wen ich von den Auftragsdaten PDF´s benötige, dan möchte ich im Filecommander in die Kommandozeile zum bsp. PDF eintippen und die CMD öffnet mir die Datei und startet das Makro das bis jetzt auch wünschenswert funktioniert. Aber das Makro legt die Daten ins Verzeichnis D:\Export sollten aber in den gleichen Ordner. Das ganze sollte dan im Auftragsordner so aussehen .


5000_500_105_00.DXF
5000_500_106_00.DXF
5000_500_110_00.DXF
5000_500_115_00.DXF
5000_500_105_00.pdf
5000_500_106_00.pdf
5000_500_110_00.pdf
5000_500_115_00.pdf

wenn es geklapt hat oder nicht melde mich heute abend noch mal.

THX
Mitglied: Spidi-25
Spidi-25 05.04.2010 um 19:14:13 Uhr
Goto Top
Vielen dank alles bestens, läuft wie gewünscht
nur Ordner vom Laufwerk D:\Export\ werden nicht verschoben, nach der ganzen Aktion habe ich gemerkt das bei einem Exportformat ein unter Ordner erstellt wird. Bei den anderen 3 Exportformaten werden die Daten direkt in den D:\Export\ Ordner abgelegt und das passt so weit auch super den dann werden mit move richtig verschoben.

Gibt es eine Möglichkeit mit move D:\Export\*.* alle Daten vom unter Ordner mit der gleichen Aktion zu verschieben und alle unter Ordner von D:\Export\ löschen?


Grüße
Spidi-25
Mitglied: bastla
bastla 05.04.2010 um 19:24:20 Uhr
Goto Top
Hallo Spidi-25!
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 Art
for /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"
oder einfach das "große Aufräumen" mit
rd /s /q D:\Export
Grüße
bastla
Mitglied: Spidi-25
Spidi-25 05.04.2010 um 21:35:30 Uhr
Goto Top
Alles Klar jetzt haben wir es, du hast mir sehr sehr geholfen vielen vielen Dank.


P.S gibt es eine Webseite oder ein Buch, wie man die Zeichen nacheinander setzt, damit was vernünftiges raus kommt wie z.B. for /f "delims=" %%i in ('dir /s /b /a-d D:\Export\*.*') do move "%%i"

Grüß
Spidi-25
Mitglied: Spidi-25
Spidi-25 15.09.2010 um 12:59:20 Uhr
Goto Top
@ Bastla


@echo off & setlocal  
set "Ext=.pdf"   
set "Prog=XLSmacker.exe"   
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"   
    start /w c:\Makro\Makro.exe  
)

habe in Zeile 3 was verändert, brauche ich dann noch die Zeile 4 und 5?

Ist die Zeile 4 und 5 nur zur Ermittlung ob ein Programm für die Datei festgelegt ist?

Kann es sein das die Zeile 9 so aussehen muss ohne "" nur %Prog%
    start %Prog% "%%f  
denn nur so funktioniert es mit der neuen Zeile 3

vorher habe ich die Zeile so gehabt
    start "%Prog%" "%%f"     
habe damals nach dem start die "" vergessen hat aber trotzdem funktioniert.

ich möchte jetzt ein festes Programm in der CMD festlegen, deswegen die neu Zeile 3

Grüße
Spidi-25
Mitglied: bastla
bastla 15.09.2010 um 19:41:03 Uhr
Goto Top
Hallo Spidi-25!

Schreib die Zeile 9 so (der erste unter Anführungszeichen stehende Parameter wird als Fenstertitel interpretiert - siehe auch "start /?"):
start "Bearbeite %%f" "%Prog%" "%%f"
Grüße
bastla
Mitglied: Spidi-25
Spidi-25 15.09.2010 um 21:42:24 Uhr
Goto Top
Hallo bastla

ich habe jetzt verschiedene Möglichkeiten probiert und auch unter "start /?" nachgeschlagen und hier ist das Ergebnis

start "Bearbeite %%f" "%Prog%" "%%f"  >>>  funktioniert  

start "" "%Prog%" "%%f" >>>  funktioniert  

start %Prog% %%f >>> komplett ohne ""  >>>  funktioniert  

start "" %Prog% %%f  >>>  funktioniert  

start  "%Prog%" "%%f"  >>>  funktioniert nicht!  

so wie ich das interpretiert habe muss nur bei Title ["Title"] "" verwendet werden!

Bei mir zu hause hat die Zeile start "" "%Prog%" "%%f" >>> funktioniert (Win7 32bit) auf der Arbeit mit dem gleichen Programm, Makro und CMD (Win XP 64bit) nicht, werde es morgen nochmal testen. Ich weiß ob es beim bei Win XP x64 zu Win7 32bit einen unterschied bei Batch gibt.

Eins habe ich aber gemerkt bei Zeile 3

Zuhause bei Win7 32bit reicht es so!
set "Prog=XLSmacker.exe"  

auf der Arbeit Win XP x64 nur so!
set "Prog=D:\"Program Files"\"XLS macker"\XLSmacker.exe"  
und nicht so!
set "Prog=D:\Program Files\XLS macker\XLSmacker.exe"  

was ist mit Zeile 4 und 5?

Grüße
Spidi-25
Mitglied: bastla
bastla 15.09.2010 um 21:59:22 Uhr
Goto Top
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 "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 ...