AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Batch-File zur Konvertierung,Dateiendung im Parameter ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Batch-File zur Konvertierung,Dateiendung im Parameter ändern

Ein Thema von benst · begonnen am 16. Okt 2007 · letzter Beitrag vom 17. Okt 2007
Antwort Antwort
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#1

Batch-File zur Konvertierung,Dateiendung im Parameter ändern

  Alt 16. Okt 2007, 14:54
Hallo,

ich möchte mit einem kleinen Batch-File (Stapelverarbeitungsdatei, *.bat) eine Konvertierung durchführen.
Dazu möchte ich den übergebenen Dateienamen (Parameter wird durch Drag-and-Drop auf Batch-File übergeben) einem Programm übergeben. Das Programm macht z.B. aus text.tex -> text.dvi . Im nächsten Schritt möchte ich text.dvi an ein anderes Programm übergeben.
Dazu muss ich von dem Parameter die Endung abschneiden und eine neue anfügen.
Code:
verarbeitung1.exe %1  // (%1 ist der übergebene Parameter) aus z.B. %1 = "d:\text.tex"; dann wird aus text.tex text.dvi
verarbeitung2.exe ???%1???  // %1.div wäre ja falsch, weil %1.div = "d:\text.tex".div wäre (Anführungszeichen beachten!)
Ich hoffe, ich konnte meine Frage verständlich ausdrücken. Habe jetzt schon ziemlich lange gegooglet, aber bisher nichts entsprechendes gefunden.

Gruß
Ben
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Batch-File zur Konvertierung,Dateiendung im Parameter än

  Alt 16. Okt 2007, 15:14
Hallo Ben,

versuche es so:

Code:
@for %I in (%1) do echo %~dpnI.dvi
Grüße vom marabu
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#3

Re: Batch-File zur Konvertierung,Dateiendung im Parameter än

  Alt 16. Okt 2007, 16:13
Hallo marabu,

danke. Ganz so hat es nicht geklappt, aber das hat mich entscheidend weitergebracht.
Jetzt funktioniert es, wie es soll:

Code:
: prüfen, ob ein Parameter übergeben wird
if %1!==! goto ende

: aktuelles Laufwerk wechseln
%~d1

: aktuellen Pfad wechseln
cd "%~dp1"

: tex2dvi
latex.exe (...) "%~nx1"

: dvi2ps
dvips.exe (...) "%~n1.dvi"

:ende
(...) steht für weitere Parameter.

Gruß
Ben
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
81 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Batch-File zur Konvertierung,Dateiendung im Parameter än

  Alt 17. Okt 2007, 07:14
Hallo Achim,

Zitat von marabu:
Hallo Ben,

versuche es so:

Code:
@for %I in (%1) do echo %~dpnI.dvi
der Befehl ist so richtig, wenn er direkt auf der Kommandozeile eingegeben wird.
In einer Batchdatei müssen aber die Prozentzeichen vor den Variablen der for-Schleife
verdoppelt werden. Korrekt wäre also

Code:
@for %%I in (%1) do echo %%~dpnI.dvi
jkr
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Batch-File zur Konvertierung,Dateiendung im Parameter än

  Alt 17. Okt 2007, 09:11
Hallo Jürgen,

vielen Dank für deinen Hinweis.

Wer sich mit der command shell beschäftigt, der wird feststellen, dass es da unterschiedliche Syntaxregeln bezüglich Variablen gibt: Doppeltes Prozentzeichen vor Steuervariablen im batch mode und einfaches im interaktiven Modus. Umgebungsvariablen müssen stets in Prozentzeichen eingeschlossen werden (%PATH%) und Parameter werden auch im Batch nur durch ein einzelnes Prozentzeichen vor der Parameternummer (%2) referenziert.

Wie immer hilft ein Blick in die Online Hilfe (CMD /? oder auch FOR /?) bevor man irgendetwas abtippt und sich wundert. Ben hatte offensichtlich kein Problem mit der Syntax.

Freundliche Grüße
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#6

Re: Batch-File zur Konvertierung,Dateiendung im Parameter än

  Alt 17. Okt 2007, 15:06
Danke
Ich habe es jetzt korrigiert:
Code:
@for %%I in (%1) do %%~dI

: prüfen, ob ein Parameter übergeben wird
if %1!==! goto ende

: aktuelles Laufwerk wechseln
@for %%I in (%1) do %%~dI

: aktuellen Pfad wechseln
@for %%I in (%1) do cd "%%~dpI"

: tex2dvi
@for %%I in (%1) do C:\texmf\MiKTeX\bin\latex.exe --src -interaction=nonstopmode -max-print-line=120 "%%~nxI"

: dvi2ps
@for %%I in (%1) do C:\texmf\MiKTeX\bin\dvips.exe -P pdf "%%~nI.dvi"

: ps2pdf
@for %%I in (%1) do C:\Programme\gs\gs\gs8.54\bin\gswin32c.exe -sPAPERSIZE=a4 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="%%~nI.pdf" -c save pop -f "%%~nI.ps"

pause

:ende
Gruß
Ben
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz