Funktion für Dateierstellung (copy_full_name_to_file)?
Moderators: Hacker, Stefan2, white
Funktion für Dateierstellung (copy_full_name_to_file)?
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
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
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
HTH
Roman
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
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
Re: Funktion für Dateierstellung (copy_full_name_to_file)?
Davon ausgehend, dass Du XP benutzt, geht das ganze incl. Uhrzeit in 4 Zeilen:
(Die 'rem'- Zeilen kannst Du natürlich weglassen, dann sinds auch nur 4 Zeilen
)
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
sheepdog
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"

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

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
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
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
Die Leerzeichen sind absichtlich drin, kannst Du aber auch raus lassen:
Die Optionen bekommst Du mit 'help for' auf der Kommandozeile, oder wenn Du dir's ausdrucken willst 'help for > for_help.txt'
sheepdog
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"
sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Sheepdog,
die Leerstellen im Code habe ich schon gelöscht, aber irgendwie baut er im Wochentag eine Leerstelle ein:
Mein Code schaut so aus:
und ergibt:
Aber ich muss mich mal in Ruhe mit der "Help for" beschäftigen.
Schönen Abend
Peter
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"
Code: Select all
200405Do 0621Std51min35sek75ms.tmp
Schönen Abend
Peter
-
- Junior Member
- Posts: 67
- Joined: 2003-05-12, 18:44 UTC
FOR /F und %DATE%
Der Grund Deines 'falschen' Parsings ist wie folgt:
ECHO %DATE% liefert:
Du hast als Delimiter nur den Punkt angegeben, der String wird also an jedem Punkt zerteilt und ergibt:
mit den bemängelten Ergebnissen.
Du mußt das Leerzeichen ebenfalls in den Delim eintragen, also:
Dann erhällts Du:
und brauchst nur mehr entsprechend zusammenstoppeln 
ECHO %DATE% liefert:
Code: Select all
Do 06.05.2004
Code: Select all
%%i=Do 06
%%j=05
%%k=2004
Du mußt das Leerzeichen ebenfalls in den Delim eintragen, also:
Code: Select all
delims= ."
Code: Select all
%%i=Do
%%j=06
%%k=05
%%l=2004

MikeTheGuru
RegNr #48208
RegNr #48208
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)Peter wrote:Aber ich muss mich mal in Ruhe mit der "Help for" beschäftigen.Code: Select all
200405Do 0621Std51min35sek75ms.tmp
Schönen Abend
Peter
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
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
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
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