silver1986
Goto Top

Batch Datei zum starten einer Präsentation

Ich muss für ein Projekt eine Batch Datei schreiben, welche beim starten einer live cd (batchdatei wird in diese eingebunden) einen Angesteckten Flashspeicher (wenn vorhanden) nach einer Config datei durchsucht und diese ausführt. Wenn keine Config datei da ist soll die batch datei automatisch die erste Präsentation startet die sie findet.

Kenn mich recht wenig mit batch dateien aus und könnte mal hierzu etwas hilfe gebrauchen. Danke im Vorraus

Content-Key: 100199

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

Printed on: April 26, 2024 at 01:04 o'clock

Member: miniversum
miniversum Oct 25, 2008 at 11:09:09 (UTC)
Goto Top
Was genau ist die Frage?
Prüfen ob eine config-Datei da ist:
if exist D:\config.txt ...
Und starten einer Präsentation kanns tud ja z.B. über den powerpointviewer machen...
Bischen Infos und die bisherigen Bemühungen von dir wären gut.
Member: Silver1986
Silver1986 Oct 25, 2008 at 18:27:53 (UTC)
Goto Top
Na folgende Aufgabenstellung:

1. beim start einer livecd soll überpruft werden ob ein flash speicher am pc angeschlossen ist

a. wenn ja diesen öffnen -> Schritt 2
b. wenn nein infofenster zb "Keins Flashspeicher gefunden" nix weiter machen

2. den Flashspeicher nach eine bestimmten config datei durchsuchen (name noch unbekannt)

a. wenn vorhanden diese ausführen -> zusatz 1
b. wenn nicht vorhanden -> Schritt 3

3. Flashspeicher nach einer Präsentation durchsuchen (erstmögliche die er findet mit programm XYZ offnen, wenn keine vorhanden ist Infofenster zb Keine Präsentation gefunden) (Programm noch nicht bekannt, wahrscheinlich offic viewer)

Zusatz 1

der inhalt der config besagt öffne folgende Prässentation in odner so und so, wenn diese nicht vorhanden Fehlermeldung zb In der Config Angegebene Präsentation nicht vorhanden -> Schritt 3

Zusatz 2

wen nauf dem flashspeicher eine Winamp Playlist drauf ist diese auch automatisch starten, wenn nicht Meldung zb Keine Playlist gefunden, nix weiter tun


so mal der sin der batchdatei, und sie muss sich selbst beim starten der livecd ausführen
Member: miniversum
miniversum Oct 26, 2008 at 08:23:20 (UTC)
Goto Top
Damit der Lerneffekt vorhanden bleibt hast du ja sichelrich ncihts dagegen wen du mal postest was Du bisher hast.
Tips:
1. Suchen kanns du mit dir z.B.
dir /s /b C:\*.txt
durchsucht C nach allen txt Dateien
2. Prüfen ob udn unter wlechem Buchstaben der Speicher angeschlossen ist kannst du mit dem Befehl fsutil. Mußt du mal duchschauen wie genau.
Alternativ geht es auch mit wmic.
Member: Silver1986
Silver1986 Oct 27, 2008 at 10:36:18 (UTC)
Goto Top
das ist schon mal nen guter anfang werde es mal ausprobieren danke schon mal
Member: Silver1986
Silver1986 Oct 31, 2008 at 08:18:36 (UTC)
Goto Top
irgendwie komm ich nicht vorran bin nun soweit, dass ich zwar sagen kann welche präsentation er mit welchem programm öffnen soll, aber das mit der suche funktioniert irgendwie nicht.

wie kann ich das nun machen, dass die batchdatei nach einem usb stick sucht (desen laufwerksbuchstaben nicht immer gleich ist) und darin eine bestimmte präsentation öffnet???

bitte um hilfe
Member: miniversum
miniversum Oct 31, 2008 at 17:47:57 (UTC)
Goto Top
Also:
Alle mölichen Laufwerksbuchstaben kann mann mit einem Forschleife durchgehen.
Wie ich schon weiter oben geschrieben habe gibt es das Programm fsutil. Sucht man dort etwas in den Möglichkeiten rum findet man den Befehl
fsutil fsinfo drivetype
, gefolgt von einem Laufwerksbuchstaben, um zu sehen welches Laufwerk ein Austauschbarer Datenträger ist. Die Laufwerke A und B kann man dabei weglassen.
Die Ausgaben kann man mit Hilfe einer For-Schleife abfangen. So könnte dann etwas sowas herauskommen:
@echo off
for %%L in (d e f g h i j k l m n o p q r s t u v w x y z) do (
FOR /F "tokens=2* delims= " %%S in ('fsutil fsinfo drivetype %%L:') do call:teste %%L "%%T"  
)
pause
goto:eof

:teste
if "%~2" equ "Austauschbares Laufwerk" echo %1  
goto:eof
Dait kannst Du rausfinden welche Laufwerke in Frage kommen.
Member: Silver1986
Silver1986 Nov 04, 2008 at 10:12:36 (UTC)
Goto Top
kannst mir mal bitte noch kurz erklären was da oben genauer steht damit ich mir mal die befehle und so merke
Member: miniversum
miniversum Nov 04, 2008 at 17:22:43 (UTC)
Goto Top
for %%L in (d e f g h i j k l m n o p q r s t u v w x y z) do (
Geht die Liste (Buchstaben) einzeln durch. In der Variabeln %%L steht also nach einander jeder Buchstabe der Liste.
fsutil fsinfo drivetype %%L:
Gibt für den Jeweiligen Laufwerksbuchstaben den Laufwerkstyp aus. Diese ausgabe wird mit Hilfer der zweiten, inneren For-Schleife abgefangen. Zusammen also:
FOR /F "tokens=2* delims= " %%S in ('fsutil fsinfo drivetype %%L:') do   
call:teste %%L "%%T"  
Ruft die Unterprozedur "teste" bei jedem Durchlauf auf und übergibt den jeweiligen Laufwerksbuchstabe und den dazugehörige Typ (%%S).
Das goto:eof springt dann nurnoch zum Ende der Batchdatei.

In der Unterprozedur "teste" wird dann mit
if "%~2" equ "Austauschbares Laufwerk"  
kontrolliert ob der Laufwerkstyp (2. Parameter) ein austauschbares Laufwerk ist. Trift das zu wird der zugehörige Laufwerksbuchstabe ausgegeben.
Member: Silver1986
Silver1986 Nov 06, 2008 at 07:22:01 (UTC)
Goto Top
ah jetzt leuchtests ein werde das gleich mal probieren danke
Member: Silver1986
Silver1986 Nov 28, 2008 at 07:25:07 (UTC)
Goto Top
brauch mal noch zu folgendem problem eine lösung

wenn eine batch datei gestartet wir, soll im vorfeld 2 werte festgelegt werden

wert ein ist ein ordner und wert 2 eine datei

dannach soll die batchdatei das rootverzeichnis nach dem ersten wert durchsuchen, wenn dieser vorhanden ist, soll die batchdatei den ordner nach dem 2. wert durchsuchen. ist dieser vorhanden, soll die datei mit einem bestimmten programm gestartet gestartet werden.

ist der 2. wert nicht vorhanden, soll nach der zu letzt geänderten datei gesucht werden (im order von wert 1) und dies dann gestartet werden.
wobei aber, wenn der wert 2 im root vorhanden ist, soll er dies starten nicht die zuletzt geänderte datei aus wert 1.

ist der order aus wert eins nicht vorhanden soll im root nach wert 2 gesucht werden, ist dieser vorhanden, mit bestimmten programm öffnen. ist er nicht vorhanden, den root nach der zu letzt geänderten datei durchsuchen und diese dann starten.

ist keine datei und kein ordner vorhanden soll eine meldung erscheinen mit dem Inhalt "Keine Präsentatinen gefunden"

Die dateien werden vorwiegend .pp* sein.

würde mich auf schnelle hilfe freuen
Member: Silver1986
Silver1986 Nov 29, 2008 at 10:09:18 (UTC)
Goto Top
hat keiner eine idee hab leider nicht viel ahnung von bat dateien
Member: miniversum
miniversum Nov 29, 2008 at 10:46:40 (UTC)
Goto Top
Hier mal ein ungetesteter Entwurf von mir:
@echo off
set "pfad=H:\pfad"  
set "datei=Datei.ppt"  
set "root=%~p0"  
set "startfile="  

dir "%pfad%\*.*" >NUL 2>NUL  
if %errorlevel% == 1 (
  echo "%pfad%" nicht vorhanden  
  echo suche nach "%root%\%datei%"  
  dir "%root%\%datei%" >NUL 2>NUL  
  if %errorlevel% == 1 (
    echo "%root%\%datei%" nicht vorhanden  
    echo suche nach neuster datei in "%root%"  
    FOR /F "delims=" %%i in ('dir /B /OD "%root%\*.pp*"') do set "startfile=%~fi"  
  ) else (
    set "startfile=%root%\%datei%"  
  )
) else (
  echo "%pfad%" vorhanden  
  dir "%pfad%\%datei%" >NUL 2>NUL  
  if %errorlevel% == 1 (
    echo "%pfad%\%datei%" nicht vorhanden  
    echo suche nach "%root%\%datei%"  
    dir "%root%\%datei%" >NUL 2>NUL  
    if %errorlevel% == 1 (
      echo "%root%\%datei%" nicht vorhanden  
      echo suche nach neuster datei in "%pfad%"  
      FOR /F "delims=" %%i in ('dir /B /OD "%pfad%\*.pp*"') do set "startfile=%~fi"  
    ) else (
      set "startfile=%root%\%datei%"  
    )
  ) else (
    echo "%pfad%\%datei%" vorhanden  
    set "startfile=%pfad%\%datei%"  
  )
)

if not defined startfile (
  echo Keine Präsentatinen gefunden
) else (
  echo Starte Präsentation "%startfile%"  
  start powerpoint.exe "%startfile%"  
)

Die zeilen mit den echos sind zum testen hilfreich. Kannst du dann rausmachen wenn du willst udn siehst das alles so geht wie es soll.
Den start der Präsentation hab ich jetzt einfahc mal so mit powerpoint. Das must du ggf. anpassen.
Member: Silver1986
Silver1986 Nov 29, 2008 at 15:37:09 (UTC)
Goto Top
wow das ist gut klingt einleuschtent, aber eine frage hab ich noch wofür steht die variable startfile???
Member: miniversum
miniversum Nov 29, 2008 at 15:54:01 (UTC)
Goto Top
Das ganze funktioniert so, dass zu Begin sichergestellt wird das die Variable startfile keinen Wert enthält, also nicht definiert ist. Dann wird an den Vershciedenen orten in der entsprechenden Reihenfolge gesucht und bei einem Fund die Datei (also Dateiname mit Pfadangabe, in diese Variable geschrieben.
Am Ende wird kontrolliert ob in dieser Variabeln etwas steht. Wenn nicht kommt die Meldung (weil weder die gesuchte noch eine andere pp* Datei gefunden werden konnte). Wurde allerdings eine entsprechende datei gefunden, steht diese in der Variabeln startfile.
Member: Silver1986
Silver1986 Nov 29, 2008 at 16:24:38 (UTC)
Goto Top
ahh, ok das hab ich jetzt kapiert und welcher befehl startet die zuletzt bearbeitete datei?
Member: miniversum
miniversum Nov 29, 2008 at 17:10:21 (UTC)
Goto Top
Das
start powerpoint.exe "%startfile%"
in Zeile 43 ist der Aufruf der Präsentation mit der Datei die gefunden wurde. Eben die angegebene oder zuletzt geänderte.
Member: Silver1986
Silver1986 Nov 30, 2008 at 18:30:51 (UTC)
Goto Top
hab das script mal an meine anforderungen angepasst wollte mal wissen ob das so alles stimmt.

@echo off
set "pfad=\praesentation"
set "datei=standart.pps"
Set “datei2=musik.m3u“
set "root=%~p0"
set "startfile="

dir "%pfad%\*.*" >NUL 2>NUL
if %errorlevel% == 1 (
echo "%pfad%" nicht vorhanden
echo suche nach "%root%\%datei%"
dir "%root%\%datei%" >NUL 2>NUL
if %errorlevel% == 1 (
echo "%root%\%datei%" nicht vorhanden
echo suche nach neuster Datei in "%root%"
FOR /F "delims=" %%i in ('dir /B /OD "%root%\*.pp*"') do set "startfile=%~fi"
) else (
set "startfile=%root%\%datei%"
)
) else (
echo "%pfad%" vorhanden
dir "%pfad%\%datei%" >NUL 2>NUL
if %errorlevel% == 1 (
echo "%pfad%\%datei%" nicht vorhanden
echo suche nach "%root%\%datei%"
dir "%root%\%datei%" >NUL 2>NUL
if %errorlevel% == 1 (
echo "%root%\%datei%" nicht vorhanden
echo suche nach neuster datei in "%pfad%"
FOR /F "delims=" %%i in ('dir /B /OD "%pfad%\*.pps"') do set "startfile=%~fi"
) else (
set "startfile=%root%\%datei%"
)
) else (
echo "%pfad%\%datei%" vorhanden
set "startfile=%pfad%\%datei%"
)
)
if not defined startfile (
echo Keine Präsentationen gefunden
) else (
echo Starte Präsentation "%startfile%"
start "%startfile%"
)

start /Programme/vlc/vlc.exe %datei2%
if %errorlevel% == 1
(
echo "%datei2%" nicht vorhanden
) pause
Member: miniversum
miniversum Nov 30, 2008 at 21:00:39 (UTC)
Goto Top
Den Schluss solltest du ändern:
if not defined startfile (
echo Keine Präsentationen gefunden
) else (
echo Starte Präsentation "%startfile%"  
start "" "%startfile%"  
)

start /Programme/vlc/vlc.exe %datei2%
if %errorlevel% == 1
(
echo "%datei2%" nicht vorhanden  
) pause

In Zeile 5 sind die zusätzlichen "" drin weil sonst nichts startet. Siehe dazu die Hilfe vom start Befehl.
Zum rest kan ich nciths sagen, da ich ja ncith weiß ob Datei2 immer vorhanden ist.

Probiere es doch einfach aus und wenn was ncith geht kansn tud das hier ja schreiben.