IPB

Willkommen, Gast ( Anmelden | Registrierung )

 
Reply to this topicStart new topic
> Projektbezogene Dateien laden
Thomas
Beitrag 17.07.2012 - 15:13
Beitrag #1


Nachschlagewerk des Orakels
Gruppensymbol

Gruppe: Mods
Beiträge: 955
Mitglied seit: 29.08.2006
Wohnort: Frankfurt am Main
Mitglieds-Nr.: 6.217



Zuerst das Großgedruckte:
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 blush.gif), meistens 50 Dateien auf einmal offen habe, die zu verschiedenen Projekten gehören, statt jeweils die 5 bis 10, die aktuell zu einem Projekt gehören, habe ich mir eine Batch-Lösung gebastelt.

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]
    DEFAULTPROJECT=foobar
    (das jeweilige Projekt sollte in "projekte.base.ini" definiert sein).
  • Die PD-Dateien können die Angabe der zu öffnenden Dateien enthalten:
    QUELLTEXT
    RESTOREFILENAMES=...
    Die Angabe muss auf einer Zeile stehen, genau, wie sie auch in "htmledit.ini" abgespeichert wird.
  • Die Batch-Datei muss im Programmverzeichnis aufgerufen werden.
Nach dem Aufruf der Batch-Datei im Programmverzeichnis wird nach dem Projekt gefragt (Liste ergibt sich aus den Dateien im Unterverzeichnis "restorefiles"). Aus den Vorlage-Dateien und der zum Projekt gehörenden PD-Datei werden die Dateien "htmledit.ini" und "projekte.ini" generiert. Optional kann das letzte Projekt ausgewählt (ist auch die Standardauswahl nach 10 Sekunden) oder der Vorgang komplett abgebrochen werden. Falls das letzte Projekt ausgewählt wird, werden zum Programmaufruf die aktuellen Dateien "htmledit.ini" und "projekte.ini" im Programmverzeichnis unverändert verwendet.

Soweit, so einfach wink.gif. Das einzige "Problem" ergibt sich noch daraus, dass ggf. in P5 Einstellungen verändert werden und (das ist ja Sinn der Verwendung dieser Batch-Datei) Dateien geöffnet/geschlossen werden. Daher fragt die Batch-Datei nach Beendigung von P5, ob die geöffneten Dateien für das Projekt gespeichert werden sollen (bei positiver Beantwortung werden die Daten in die PD-Datei geschrieben). Zudem wird getrennt nachgefragt, ob die (ggf. geänderten) Einstellungen für Programm und Projekt(e) in die Vorlage-Dateien gespeichert werden sollen. Die Standardantwort (nach 10 Sekunden) für die erste Frage (geöffnete Dateien) ist Ja, für die beiden anderen Fragen Nein (bitte beachten: Die Daten liegen unabhängig von der Antwort nach Beendigung der Batch-Datei immer in den Dateien "htmledit.ini" und "projekte.ini" vor und können von dort ggf. manuell kopiert/gesichert werden - so lange, bis erneut die Batch-Datei aufgerufen und diese Dateien überschrieben werden).

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.

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


Kommentare, Verbesserungsvorschläge und Dankesbekundungen nehme ich gerne entgegen cool.gif.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 19.03.2024 - 10:50

taschenkalender
expertise-panel IPS Driver Error

IPS Driver Error

There appears to be an error with the database.
You can try to refresh the page by clicking here