Funktion für Dateierstellung (copy_full_name_to_file)?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Funktion für Dateierstellung (copy_full_name_to_file)?

Post by *Peter »

Gibt es irgendeine Funktion (oder ein kleines Zusatzprogramm) in TC, das folgendes macht:

1) ermittle den vollen Pfad und Dateinamen der gewählten Datei(en)
2) erstelle eine leere Textdatei
3) schreibe in die Datei drei Textzeilen, bestehend aus
a) dem Pfad inkl. Namen
b) zwei fixe Zeilen, die man (Admin) irgendwo einstellen kann
4) speichere die Datei an einem fixem Ort unter einem automatisch generiertem, eindeutigem Namen (z.B. c:\meindedaten als fixen Pfad; Uhrzeit als Name "20040505144736.txt")

Any ideas??

Danke

Peter
User avatar
Cineatic
Power Member
Power Member
Posts: 876
Joined: 2003-06-02, 14:09 UTC

Post by *Cineatic »

Das ist dermaßen spezifisch, das du dir da wohl selber ein entsprechendes Tool schreiben musst...
Gruß,
Christian
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Oder ein Paar kombinieren... z.B. Aezay's TC Script Editor ( http://www.ghisler.ch/board/viewtopic.php?t=2499 ), das Makebat plugin ( https://plugins.ghisler.com/plugins/makebat.zip ), einen Editor, der ein Makro aufnehmen kann, dass hinter jede Zeile zwei andere einfugt (z.B. PFE http://www.lancs.ac.uk/staff/steveb/cpaap/pfe/ ) und ein generelles Makro Tool (z.B. PowerPro http://www.windowspowerpro.com ).

HTH
Roman
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Erstell Dir 'ne Batchdatei, in meinem Beispiel c:\batch.bat:

md c:\meinedaten
type %1>c:\meinedaten\"%date%".txt
echo fixeZeile1>>c:\meinedaten\"%date%".txt
echo fixeZeile2>>c:\meinedaten\"%date%".txt

Dann erstellst Du Dir 'nen Button:
Kommando: c:\batch.bat
Parameter: %L

Markier die Dateien, drück den Button:
Es wird der Ordner c:\meinedaten erstellt sowie eine Datei mit dem aktuellen Datum. Sie enthält die Dateiliste plus zwei Kommentarzeilen.

Wenn Du wirklich die Uhrzeit im Dateinamen brauchst, müßte man aus der Ausgabe des Kommandos "time" mittels grep o.ä. die Doppelpunkte entfernen.

Schreib erstmal, ob Dir das so reicht bzw. so gedacht war, vielleicht hab ich ja auch was falsch verstanden... ;)

Icfu
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Danke

das hört sich sehr interessant an. Werde das morgen testen und berichten.

Peter
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Re: Funktion für Dateierstellung (copy_full_name_to_file)?

Post by *Sheepdog »

Davon ausgehend, dass Du XP benutzt, geht das ganze incl. Uhrzeit in 4 Zeilen:

Code: Select all

       rem Wenn es c:\meinedaten noch nicht gibt -> erstellen
if not exist c:\meinedaten\. md c:\meinedaten
       rem Zeit: liest die Variable Time aus und entfernt die Doppelpunkte und das Komma (20:22:13,37)
       rem diese Zeit wird in der Variablen 'Zeit' gespeichert und zwar mit Einheiten  
for /f "tokens=1,2,3,4 delims=:," %%i in ("%time%") do set zeit=%%iStd %%jmin %%ksek %%lms

       rem Datum: Das Datum wird in drei Variable eingelesen, die Punkte entfernt und in die richtige
       rem Sortierreihenfolge gebracht (JJJJ MM TT)
       rem Dann wird das ganze in 'datum'gespeichert
for /f "tokens=1,2,3 delims=." %%i in ("%date%") do set datum=%%k %%j %%i

       rem im windowsverzeichnis liegt die Datei Optionen.txt, in der deine beiden fixen Zeilen stehen
       rem Jetzt wird die temporäre Liste zusammen mit Deinen 2 Zeilen in dem Ordner 
       rem 'c:\meinedaten' unter dem Namen von oben ermitteltem Datum + Uhrzeit .txt gespeichert 

type %1 + %windir%\optionen.txt > c:\meinedaten\"%datum% %zeit%.txt"
 
(Die 'rem'- Zeilen kannst Du natürlich weglassen, dann sinds auch nur 4 Zeilen :wink: )

Wie icfu bereits erwähnt hat, legst Du das ganze auf einen Button und übergibst als Parameter '%L'. Dann werden die ausgewählten Dateien (oder , wenn keine ausgewählt ist, die unter dem Cursor) mit Pfad in die Datei mit aktuellen Datum und Uhrzeit geschrieben.

Hoffe das hilft :P


sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Danke

das ist ganz genial.

Eines habe ich noch modifiziert: Ich verwende 2 "Optionen" - Dateien, weil ich auch vor dem %1 noch einen Fixtext einfügen muss. Das klappt aber bestens.

Mit den Date - Optionen muss ich mich noch beschäftigen, weil hier beim Wochentag eine Leerstelle generiert wird. Wo kann man diese Optionen nachlesen?

Schönen Dank

Peter
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Die Leerzeichen sind absichtlich drin, kannst Du aber auch raus lassen:

Code: Select all

for /f "tokens=1,2,3 delims=." %%i in ("%date%") do set datum=%%k %%j %%i
for /f "tokens=1,2,3 delims=." %%i in ("%date%") do set datum=%%k%%j%%i

for /f "tokens=1,2,3,4 delims=:," %%i in ("%time%") do set zeit=%%iStd %%jmin %%ksek %%lms
for /f "tokens=1,2,3,4 delims=:," %%i in ("%time%") do set zeit=%%i%%j%%k%%l

type %1 + %windir%\optionen.txt > c:\meinedaten\"%datum% %zeit%.txt"
type %1 + %windir%\optionen.txt > c:\meinedaten\"%datum%%zeit%.txt"


Die Optionen bekommst Du mit 'help for' auf der Kommandozeile, oder wenn Du dir's ausdrucken willst 'help for > for_help.txt'

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Sheepdog,

die Leerstellen im Code habe ich schon gelöscht, aber irgendwie baut er im Wochentag eine Leerstelle ein:

Mein Code schaut so aus:

Code: Select all

for /f "tokens=1,2,3,4 delims=:," %%i in ("%time%") do set zeit=%%iStd%%jmin%%ksek%%lms

for /f "tokens=1,2,3 delims=." %%i in ("%date%") do set datum=%%k%%j%%i

type "D:\xx\plotoptionen1.txt" + %1 + D:\xx\plotoptionen2.txt > d:\test\"%datum%%zeit%.tmp" 
und ergibt:

Code: Select all

200405Do 0621Std51min35sek75ms.tmp
Aber ich muss mich mal in Ruhe mit der "Help for" beschäftigen.

Schönen Abend

Peter
MikeTheGuru
Junior Member
Junior Member
Posts: 67
Joined: 2003-05-12, 18:44 UTC

FOR /F und %DATE%

Post by *MikeTheGuru »

Der Grund Deines 'falschen' Parsings ist wie folgt:

ECHO %DATE% liefert:

Code: Select all

Do 06.05.2004
Du hast als Delimiter nur den Punkt angegeben, der String wird also an jedem Punkt zerteilt und ergibt:

Code: Select all

%%i=Do 06
%%j=05
%%k=2004
mit den bemängelten Ergebnissen.

Du mußt das Leerzeichen ebenfalls in den Delim eintragen, also:

Code: Select all

delims= ."
Dann erhällts Du:

Code: Select all

%%i=Do
%%j=06
%%k=05
%%l=2004
und brauchst nur mehr entsprechend zusammenstoppeln :lol:
MikeTheGuru
RegNr #48208
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Peter wrote:

Code: Select all

200405Do 0621Std51min35sek75ms.tmp
Aber ich muss mich mal in Ruhe mit der "Help for" beschäftigen.

Schönen Abend

Peter
MikeTheGuru hats ja schön erklärt. Du kannst aber auch ganz einfach über Systemsteuerung->Regions- und Sprachoptionen->Regionale Einstellungen->Anpassen->Datum' das (kurze) Datumsformat auf 'TT.MM.JJJJ' einstellen. Dann wird als Datum '06.05.2004' ohne Wochentag zurückgeliefert. (Bei mir war es so eingestellt, deshalb habe ich das Leerzeichen nicht bemerkt)

Ansonsten bei 'delims=' noch ein Leerzeichen rein und evtl. die Variablen umstellen.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Herzlichen Dank für alle Antworten - und als ziemlicher Laie freue ich mich immer wieder, was man mit ein paar Batch-Zeilen alles machen kann.

Peter
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Guten Abend alle

ich muss die Geschichte doch noch ein bisschen aufwärmen -falls es zu weit von TC entfernt ist, bitte einfach ignorieren.

a) Ich muss die letzte Zeile (das "type ") so ändern, dass im Endeffekt eine Textdatei mit folgender vierzeiliger Mischung aus Fixtext und Variablen herauskommt (inkl. der Klammern und =):

[FIXTEXT1]
FIXTEXT2=langer übergebener dateiname
FIXTEXT3=anmeldenamen des users
FIXTEXT4=


b) kann man das für mehrere Dateien so machen, das hintereinander für jede dieser Dateien eine eigene Textdatei erstellt wird (ist aber nicht lebensnotwendig)

Schönen Abend

Peter
Post Reply