Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datei per Batch ausführen und Makro starten

Frage Entwicklung Batch & Shell

Mitglied: Spidi-25

Spidi-25 (Level 1) - Jetzt verbinden

03.04.2010 um 13:18 Uhr, 9072 Aufrufe, 23 Kommentare

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
Mitglied: bastla
03.04.2010 um 14:54 Uhr
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 ):
01.
@echo off & setlocla 
02.
for %%f in (*_*.pdf) do for /f "delims=_" %%n in (' %%~f') do ( 
03.
    echo move "%%~" 
04.
    c:\Makro\Makro.exe 
05.
)
Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
03.04.2010 um 15:43 Uhr
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
Bitte warten ..
Mitglied: bastla
03.04.2010 um 16:15 Uhr
Hallo Spidi-25!

Sorry und neuer Versuch:
01.
@echo off & setlocal 
02.
for %%f in (*_*.pdf) do ( 
03.
    for /f "delims=_" %%n in (' %%~f') do echo move "%%~" 
04.
    c:\Makro\Makro.exe 
05.
)
Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 00:19 Uhr
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
Bitte warten ..
Mitglied: bastla
04.04.2010 um 00:49 Uhr
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:
01.
@echo off & setlocal  
02.
set "Ext=.pdf" 
03.
set Prog= 
04.
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" 
05.
if not defined Prog echo Kein Programm für %Ext% festgelegt! & goto :eof 
06.
 
07.
for %%f in (*_*.pdf) do ( 
08.
    start "%Prog%" "%%f" 
09.
    c:\Makro\Makro.exe  
10.
)
Ansonsten wäre es sinnvoll, einmal genau zu erklären, was die ganze Aktion bewirken soll ...

Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 01:31 Uhr
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.
Bitte warten ..
Mitglied: Xpl0iT
04.04.2010 um 02:03 Uhr
wie wäre es mit

01.
@echo off 
02.
dateiname.pdf 
03.
makro.exe 
04.
kill standartanwendung.exe
das ganze dann in einer schleife, müsstest jedoch zwischen den befehlen etwas zeit zum ausführen lassen
Bitte warten ..
Mitglied: bastla
04.04.2010 um 02:13 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 02:33 Uhr
Zitat von Xpl0iT:
wie wäre es mit

<code>
@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
)
Bitte warten ..
Mitglied: Spidi-25
04.04.2010 um 02:43 Uhr
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.
Bitte warten ..
Mitglied: bastla
04.04.2010 um 10:43 Uhr
Hallo Spidi-25!

Nachtrag: Die Zeilen 7 bis 10 hatte ich eigentlich so gemeint:
01.
for %%f in (*_*.pdf) do ( 
02.
    start "" "%Prog%" "%%f" 
03.
    start /w c:\Makro\Makro.exe  
04.
)
Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
05.04.2010 um 02:26 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
05.04.2010 um 09:28 Uhr
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
Bitte warten ..
Mitglied: bastla
05.04.2010 um 09:52 Uhr
Hallo Spidi-25!

Die zusätzliche Zeile könnte so aussehen:
move D:\Export\*.*
Grüße
bastla
Bitte warten ..
Mitglied: Biber
05.04.2010 um 10:08 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
05.04.2010 um 13:31 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
05.04.2010 um 19:14 Uhr
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
Bitte warten ..
Mitglied: bastla
05.04.2010 um 19:24 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
05.04.2010 um 21:35 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
15.09.2010 um 12:59 Uhr
@ Bastla


01.
@echo off & setlocal   
02.
set "Ext=.pdf"  
03.
set "Prog=XLSmacker.exe"  
04.
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"  
05.
if not defined Prog echo Kein Programm für %Ext% festgelegt! & goto :eof  
06.
 
07.
 
08.
for %%f in (*_*.pdf) do (  
09.
    start %Prog% "%%f"  
10.
    start /w c:\Makro\Makro.exe   
11.
)
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%
01.
    start %Prog% "%%f
denn nur so funktioniert es mit der neuen Zeile 3

vorher habe ich die Zeile so gehabt
01.
    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
Bitte warten ..
Mitglied: bastla
15.09.2010 um 19:41 Uhr
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
Bitte warten ..
Mitglied: Spidi-25
15.09.2010 um 21:42 Uhr
Hallo bastla

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

01.
start "Bearbeite %%f" "%Prog%" "%%f"  >>>  funktioniert
01.
start "" "%Prog%" "%%f" >>>  funktioniert
01.
start %Prog% %%f >>> komplett ohne ""  >>>  funktioniert
01.
start "" %Prog% %%f  >>>  funktioniert
01.
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!
01.
set "Prog=XLSmacker.exe"
auf der Arbeit Win XP x64 nur so!
01.
set "Prog=D:\"Program Files"\"XLS macker"\XLSmacker.exe"
und nicht so!
01.
set "Prog=D:\Program Files\XLS macker\XLSmacker.exe"
was ist mit Zeile 4 und 5?

Grüße
Spidi-25
Bitte warten ..
Mitglied: bastla
15.09.2010 um 21:59 Uhr
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 ...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(6)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch erst starten wenn bestimmte Datei vorhanden ist (7)

Frage von pdiddo zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Neuere Datei per Batch ausfinding machen (2)

Frage von chattie zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...