ACHTUNG, wichtiger Hinweis: Bitte diese Batch-Datei nur verwenden, wenn du genau weißt, was du da machst. Andernfalls können ggf. alle Einstellungen von P5, die in den Dateien "htmledit.ini" und "projekte.ini" im Programmverzeichnis gespeichert sind, verloren gehen. Der Autor übernimmt keinerlei Verantwortung für irgendwelche Folgen, die aus der Verwendung der Batch-Datei resultieren und empfiehlt auch denen, die glauben zu wissen, wass sie da machen, vorher Sicherungskopien aller relevanten Dateien anzulegen.
Und jetzt zum Thema:
Da ich mich, gerade bei umfangreichen Projekten, schon des öfteren geärgert habe, dass es keine Möglichkeit gibt, die Dateien bezogen auf ein Projekt zu laden und ich deshalb, wenn ich abwechselnd mit mehreren Projekten arbeite (was eigentlich fast immer der Fall ist

Diese erlaubt es, die zu öffnenden Dateien je Projekt zu definieren und gleichzeitig vor dem Aufruf von P5 schon das jeweilige Projekt festzulegen. Nicht ganz so schön wie eine programminterne Unterstützung, da zu einem Projektwechsel mit Dateiwechsel immer das Programm beendet werden muss, aber deutlich besser als ganz ohne eine Dateiwechselmöglichkeit.
Voraussetzungen
- Der DOS-Befehl "CHOICE" muss vorhanden sein (getestet wurde mit DOS-Version (Befehl "VER") "Microsoft Windows [Version 6.0.6001]").
- Eine Vorlage-Datei "htmledit.base.ini" im Programmverzeichnis, die den Inhalt von "htmledit.ini" enthält. Die Einstellungsgruppe "[global]" muss die letzte in dieser Datei sein (ist standardmäßig so) und die Datei sollte die Zeichenkette "RESTOREFILENAMES=" nur einmal, nämlich bei der Definition der zu öffnenden Dateien, enthalten.
ACHTUNG: Dies kann, wenn z.B. nach diesem String in P5 gesucht wurde, durchaus nicht der Fall sein. - Eine Vorlage-Datei "projekte.base.ini" im Programmverzeichnis, die den Inhalt von "projekte.ini" enthält. Die Datei darf die Zeichenkette "DefaultProject" (Groß-/Kleinschreibung egal) nur bei der Definition des zu öffnenden Projektes enthalten (als Gruppen- und Einstellungsname).
ACHTUNG: Dies kann theoretisch durchaus nicht der Fall sein, wenn die Zeichenkette innerhalb von Einstellungen/Projektbezeichnern verwendet wird (sollte aber eher unwahrscheinlich sein). - Ein Unterverzeichnis "restorefiles" im Programmverzeichnis, das die Dateien mit den Definitionen (PD-Dateien) enthält. Die Dateien sollten zur Vereinfachung ihrer Bearbeitung (müssen aber nicht) die Erweiterung "txt" haben.
- Die PD-Dateien müssen mindestens die Definition des zu öffnenden Projektes enthalten QUELLTEXT[DefaultProject](das jeweilige Projekt sollte in "projekte.base.ini" definiert sein).
DEFAULTPROJECT=foobar - Die PD-Dateien können die Angabe der zu öffnenden Dateien enthalten:QUELLTEXTRESTOREFILENAMES=...Die Angabe muss auf einer Zeile stehen, genau, wie sie auch in "htmledit.ini" abgespeichert wird.
- Die Batch-Datei muss im Programmverzeichnis aufgerufen werden.
Soweit, so einfach

Ansonsten ist es zum Start nur notwendig, die Dateien "htmledit.ini" und "projekte.ini" in "htmledit.base.ini" und "projekte.base.ini" umzubenennen, das Verzeichnis "restorefiles" mit den PD-Dateien für alle gewünschten Projekte zu erzeugen und in die PD-Dateien jeweils die Definition des zu öffnenden Projektes einzutragen
QUELLTEXT
[DefaultProject]
DEFAULTPROJECT=foobar
(das jeweilige Projekt sollte in "projekte.base.ini" definiert sein). Beim Start öffnet sich P5 dann ohne Dateien, diese können wie gewünscht und zum Projekt passend geöffnet werden. Nach Beenden von P5 muss die Abfrage nach dem Speichern der geöffneten Dateien nur mit Ja beantwortet werden und schon kann die projektbezogene Dateiliste beim nächsten Aufruf ganz einfach wiederhergestellt werden. Alternativ kann man die PD-Dateien natürlich auch direkt mit entsprechenden Dateilisten aus "htmledit.ini" bestücken.DEFAULTPROJECT=foobar
So, jetzt wird's nochmal groß:
Obwohl ich diese Batch-Datei nach bestem Wissen und Gewissen erstellt und getestet habe, kann ich nicht garantieren, dass sie wirklich alles ganz genau so macht, wie ich es oben beschrieben habe. Deshalb empfehle ich allen Verwendern dringend, vorher selbst zu prüfen, ob die Beschreibung mit der Funktionsweise der Batchdatei übereinstimmt. Ich übernehme weiterhin keinerlei Verantwortung für irgendwelche Folgen, die aus der Verwendung der Batch-Datei resultieren und empfehle nochmals allen, die sie verwenden, vorher Sicherungskopien aller relevanten Dateien anzulegen.
CODE
@ECHO OFF
REM Anzeige ausschalten
REM Umgebungsänderungen nur lokal, verzögerte Auswertung aktivieren
SETLOCAL ENABLEDELAYEDEXPANSION
REM Auswahlmöglichkeiten anzeigen und Dateiname speichern
ECHO Welche Dateien sollen geladen werden?
SET num=1
SET numlst=
SET prj=
FOR %%f IN (restorefiles\*.*) DO (
SET prj=%%~nf
ECHO [!num!] Projekt !prj!
SET numlst=!numlst!!num!
SET /A num=!num!+1
)
ECHO [L]etztes Projekt
SET /A lstnum=%num%
SET numlst=%numlst%L
ECHO [A]bbrechen
SET /A cncnum=%num%+1
SET numlst=%numlst%A
REM Auswahl abfragen
CHOICE /M "W„hlen Sie das Projekt ber die Nummer aus oder brechen Sie mit [A] ab." /N /C %numlst% /T 10 /D L
SET fil=%ERRORLEVEL%
IF %fil% EQU %lstnum% GOTO :CALLP5
IF %fil% EQU %cncnum% GOTO :EOF
REM Ausgewählten Dateinamen auslesen
SET num=1
FOR %%f IN (restorefiles\*.*) DO (
IF !num!==%fil% SET fil=%%~dpf%%~nxf
SET /A num=!num!+1
)
REM Daten übertragen
IF EXIST %fil% (
TYPE htmledit.base.ini | FIND /V "RESTOREFILENAMES=" > htmledit.ini
TYPE %fil% | FIND "RESTOREFILENAMES=" >> htmledit.ini
TYPE projekte.base.ini | FIND /I /V "DEFAULTPROJECT" > projekte.ini
TYPE %fil% | FIND /I "DEFAULTPROJECT" >> projekte.ini
)
REM Programm aufrufen
:CALLP5
CALL htmledit.exe
CLS
REM Editor-Einstellungen speichern
ECHO Editor-Einstellungen in Vorlage speichern?
ECHO [J]a
ECHO [N]ein
CHOICE /N /C JN /T 10 /D N
IF NOT ERRORLEVEL 2 TYPE htmledit.ini > htmledit.base.ini
REM Projekt-Einstellungen speichern
ECHO Projekt-Einstellungen in Vorlage speichern?
ECHO [J]a
ECHO [N]ein
CHOICE /N /C JN /T 10 /D N
IF NOT ERRORLEVEL 2 TYPE projekte.ini > projekte.base.ini
REM Daten zurückschreiben
IF EXIST %fil% (
ECHO Ge”ffnete Dateien fr n„chsten Aufruf von Projekt %prj% speichern?
ECHO [J]a
ECHO [N]ein
CHOICE /N /C JN /T 10 /D J
IF ERRORLEVEL 2 GOTO :EOF
CALL :GETTEMPNAME
TYPE %fil% | FIND /V "RESTOREFILENAMES=" > !tmpfil!
TYPE !tmpfil! > %fil%
TYPE htmledit.ini | FIND "RESTOREFILENAMES=" >> %fil%
DEL !tmpfil!
)
REM Programmende
GOTO :EOF
REM Temporärer Dateiname
:GETTEMPNAME
SET tmpfil=%TMP%\mytempfile-%RANDOM%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%.txt
IF EXIST "%tmpfil%" GOTO :GETTEMPNAME
GOTO :EOF
REM Anzeige ausschalten
REM Umgebungsänderungen nur lokal, verzögerte Auswertung aktivieren
SETLOCAL ENABLEDELAYEDEXPANSION
REM Auswahlmöglichkeiten anzeigen und Dateiname speichern
ECHO Welche Dateien sollen geladen werden?
SET num=1
SET numlst=
SET prj=
FOR %%f IN (restorefiles\*.*) DO (
SET prj=%%~nf
ECHO [!num!] Projekt !prj!
SET numlst=!numlst!!num!
SET /A num=!num!+1
)
ECHO [L]etztes Projekt
SET /A lstnum=%num%
SET numlst=%numlst%L
ECHO [A]bbrechen
SET /A cncnum=%num%+1
SET numlst=%numlst%A
REM Auswahl abfragen
CHOICE /M "W„hlen Sie das Projekt ber die Nummer aus oder brechen Sie mit [A] ab." /N /C %numlst% /T 10 /D L
SET fil=%ERRORLEVEL%
IF %fil% EQU %lstnum% GOTO :CALLP5
IF %fil% EQU %cncnum% GOTO :EOF
REM Ausgewählten Dateinamen auslesen
SET num=1
FOR %%f IN (restorefiles\*.*) DO (
IF !num!==%fil% SET fil=%%~dpf%%~nxf
SET /A num=!num!+1
)
REM Daten übertragen
IF EXIST %fil% (
TYPE htmledit.base.ini | FIND /V "RESTOREFILENAMES=" > htmledit.ini
TYPE %fil% | FIND "RESTOREFILENAMES=" >> htmledit.ini
TYPE projekte.base.ini | FIND /I /V "DEFAULTPROJECT" > projekte.ini
TYPE %fil% | FIND /I "DEFAULTPROJECT" >> projekte.ini
)
REM Programm aufrufen
:CALLP5
CALL htmledit.exe
CLS
REM Editor-Einstellungen speichern
ECHO Editor-Einstellungen in Vorlage speichern?
ECHO [J]a
ECHO [N]ein
CHOICE /N /C JN /T 10 /D N
IF NOT ERRORLEVEL 2 TYPE htmledit.ini > htmledit.base.ini
REM Projekt-Einstellungen speichern
ECHO Projekt-Einstellungen in Vorlage speichern?
ECHO [J]a
ECHO [N]ein
CHOICE /N /C JN /T 10 /D N
IF NOT ERRORLEVEL 2 TYPE projekte.ini > projekte.base.ini
REM Daten zurückschreiben
IF EXIST %fil% (
ECHO Ge”ffnete Dateien fr n„chsten Aufruf von Projekt %prj% speichern?
ECHO [J]a
ECHO [N]ein
CHOICE /N /C JN /T 10 /D J
IF ERRORLEVEL 2 GOTO :EOF
CALL :GETTEMPNAME
TYPE %fil% | FIND /V "RESTOREFILENAMES=" > !tmpfil!
TYPE !tmpfil! > %fil%
TYPE htmledit.ini | FIND "RESTOREFILENAMES=" >> %fil%
DEL !tmpfil!
)
REM Programmende
GOTO :EOF
REM Temporärer Dateiname
:GETTEMPNAME
SET tmpfil=%TMP%\mytempfile-%RANDOM%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%.txt
IF EXIST "%tmpfil%" GOTO :GETTEMPNAME
GOTO :EOF
Kommentare, Verbesserungsvorschläge und Dankesbekundungen nehme ich gerne entgegen
