Top-Themen

Aktuelle Themen (A bis Z)

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

Übergabe von mehreren Dateien an eine EXE

Frage Entwicklung Batch & Shell

Mitglied: golsin

golsin (Level 1) - Jetzt verbinden

26.08.2014, aktualisiert 13:56 Uhr, 1215 Aufrufe, 2 Kommentare

Hallo alle zusammen,
ich grübel schon seit mehreren Tagen an einem Script was mehrere Dateien zur Verarbeitung an eine "runner.exe" weitergeben soll.

Dabei ist bekannt das die Dateien im Format "\\server\dir1\file1.ext;\\server\dir2\file2.ext;\\server\dir3\file3.ext;"... an die Batch übergeben werden, nicht aber wie viele Dateien jedes mal übergeben werden, dass ist willkürlich bzw. von einem anderen Programm abhängig worin das Batchscript eingebunden ist (kann man aber zum besseren Verständnis vernachlässigen).

Die runner.exe versteht dieses Format aber nicht und kann nur Dateien einzeln abarbeiten, das heißt "\\server\dir1\file1.ext" und dann "\\server\dir2\file2.ext" usw.
Um das abzufangen habe ich einfach den input über FOR auf 9 Variablen aufgespalten (die über das ; getrennt werden), da ich mir sicher bin das niemals mehr als neun Dateien übergeben werden. (Geht aber bestimmt auch eleganter, nur wie müsste man halt wissen )
Was noch Problematisch ist bei dieser art der Abfrage ab wann der Pfad Endet um das unnötige aufrufen der runner.exe zu vermeiden.

Ein Aufruf der Batch würde dementsprechend so aussehen:
01.
call.bat "\\server\inputdir1\inputfile1.ext;\\server\inputdir2\inputfile2.ext;\\server\inputdir3\file3.ext;" "\\server\outputdir1\"
Darin wird dann die runner.exe aufgerufen:
code type="batch">call "C:\runner.exe" -m "%input%" "%output%\%basename%"</code>

Im Endeffekt soll die Batch Datei automatisch erkennen können wie viele Dateien übergeben werden und als einzelne aufrufe an die runner.exe mit entsprechenden Ausgabepfad + Dateiname von der Eingabedatei übergenen.

Ich hoffe ihr könnt mir weiterhelfen =)

Hier ist das Script was ich mir zusammengestrickt habe:
01.
Setlocal EnableDelayedExpansion 
02.
set input=%1 
03.
set output=%2 
04.
     
05.
    Set "input1=0" 
06.
    Set "input2=0" 
07.
    Set "input3=0" 
08.
    Set "input4=0" 
09.
    Set "input5=0" 
10.
    Set "input6=0" 
11.
    Set "input7=0" 
12.
    Set "input8=0" 
13.
    Set "input9=0" 
14.
	 
15.
FOR /f "delims=; tokens=1,2,3,4,5,6,7,8,9" %%i in (%input%) DO ( 
16.
    Set "input1=%%i" 
17.
    Set "input2=%%j" 
18.
    Set "input3=%%k" 
19.
    Set "input4=%%l" 
20.
    Set "input5=%%m" 
21.
    Set "input6=%%n" 
22.
    Set "input7=%%o" 
23.
    Set "input8=%%p" 
24.
    Set "input9=%%q" 
25.
26.
	 
27.
IF %input1% NEQ 0 ( 
28.
		FOR %%a in (%input1%) do (set basename1=%%~nxa) 
29.
		call "C:\runner.exe" -m "%input1%" "%output%\%basename1%" 
30.
		) ELSE (ECHO Datei 1 nicht angegeben) 
31.
IF %input2% NEQ 0 ( 
32.
	FOR %%a in (%input2%) do (set basename2=%%~nxa) 
33.
		call "C:\runner.exe" -m "%input2%" "%output%\%basename2%" 
34.
		) ELSE (ECHO Datei 2 nicht angegeben) 
35.
IF %input3% NEQ 0 ( 
36.
	FOR %%a in (%input3%) do (set basename3=%%~nxa) 
37.
		call "C:\runner.exe" -m "%input3%" "%output%\%basename3%" 
38.
		) ELSE (ECHO Datei 3 nicht angegeben) 
39.
IF %input4% NEQ 0 ( 
40.
	FOR %%a in (%input4%) do (set basename4=%%~nxa) 
41.
		call "C:\runner.exe" -m "%input4%" "%output%\%basename4%" 
42.
		) ELSE (ECHO Datei 4 nicht angegeben) 
43.
IF %input5% NEQ 0 ( 
44.
	FOR %%a in (%input5%) do (set basename5=%%~nxa) 
45.
		call "C:\runner.exe" -m "%input5%" "%output%\%basename5%" 
46.
		) ELSE (ECHO Datei 5 nicht angegeben) 
47.
IF %input6% NEQ 0 ( 
48.
	FOR %%a in (%input6%) do (set basename6=%%~nxa) 
49.
		call "C:\runner.exe" -m "%input6%" "%output%\%basename6%" 
50.
		) ELSE (ECHO Datei 6 nicht angegeben) 
51.
IF %input7% NEQ 0 ( 
52.
	FOR %%a in (%input7%) do (set basename7=%%~nxa) 
53.
		call "C:\runner.exe" -m "%input7%" "%output%\%basename7%" 
54.
		) ELSE (ECHO Datei 7 nicht angegeben) 
55.
IF %input8% NEQ 0 ( 
56.
	FOR %%a in (%input8%) do (set basename8=%%~nxa) 
57.
		call "C:\runner.exe" -m "%input8%" "%output%\%basename8%" 
58.
		) ELSE (ECHO Datei 8 nicht angegeben)	 
59.
IF %input9% NEQ 0 ( 
60.
	FOR %%a in (%input9%) do (set basename9=%%~nxa) 
61.
		call "C:\runner.exe" -m "%input9%" "%output%\%basename9%" 
62.
		) ELSE (ECHO Datei 9 nicht angegeben)	
Mitglied: rubberman
LÖSUNG 26.08.2014, aktualisiert um 13:56 Uhr
Hallo golsin,

ungetestet etwa so:
01.
@echo off &setlocal 
02.
set "input=%~1" 
03.
set "output=%~2" 
04.
 
05.
for %%i in ("%input:;=" "%") do ( 
06.
  if "%%~i" neq "" call "C:\runner.exe" -m "%%~i" "%output%\%%~nxi" 
07.
)
Grüße
rubberman
Bitte warten ..
Mitglied: golsin
26.08.2014 um 13:56 Uhr
Tausend, tausend danke!
Funktioniert genauso wie ich mir das gedacht habe, schade das man auf so etwas nie selber kommt.
Bitte warten ..
Ähnliche Inhalte
Python
Py2exe - Pyton-Script in .exe wandeln mit Übergabe eines Arguments
Frage von BlattlausOGPython9 Kommentare

Hallo zusammen, ich nutze py2exe um einen bestehenden Python-Source-Code in Windows ausführbar zu machen. Generell funktioniert mein Vorhaben, die ...

Batch & Shell
Batch-Datei in Exe-Datei umwandeln - .exe im Autostart
gelöst Frage von Luuke257Batch & Shell7 Kommentare

Hallo zusammen! Ich habe mir (mit reichlicher Hilfe) eine Batch-Datei geschrieben, die informationen über den PC ausliest und in ...

Batch & Shell
exe Datei zum Öffnen einer anderen Datei
gelöst Frage von Amateur01Batch & Shell15 Kommentare

Hallo, ich ein kompletter Anfänger, der ein kleines Programm schreiben wollte, um einen Löschvorgang zu automatisieren. Irgendwann hatte ich ...

Windows Systemdateien
Exe-Dateien in System32 vorhanden oder nicht?
gelöst Frage von PedantWindows Systemdateien8 Kommentare

Hallo, ich stieß auf eine Merkwürdigkeit, die ich mir nicht erklären kann. Es geht um die Anwesenheit von Exe-Dateien ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 18 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 21 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...