 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Pumbaa80 Gast
|
Verfasst am: Mo Apr 24, 2006 3:24 pm Titel: Datei leeren ohne zu löschen? |
|
|
Gibt es eine einfache Möglichkeit, den Inhalt einer (Text)datei zu entfernen, ohne die Datei selbst zu löschen?
In der Hilfe zu FileAppend steht, man soll erst mal FileDelete ausführen, aber das will ich nicht.
Hintergrund: Wenn eine Datei z.B. vom Desktop gelöscht und wieder erstellt wird, ist das Icon verschoben, und das will ich vermeiden.
Thnx
Pumbaa |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mo Apr 24, 2006 3:38 pm Titel: |
|
|
| Ich schlage vor du setzt einen Link auf die Zieldatei - weil dessen Position auch bei Änderung der Zieldatei unverändert bleibt, seölbst bei Anwendung von FileAppend/FileDelete oder vice versa. |
|
| Nach oben |
|
 |
Pumbaa80 Gast
|
Verfasst am: Di Apr 25, 2006 2:41 pm Titel: |
|
|
Naja, ehrlich gesagt finde ich diesen Workaround sehr unschön.
Mir ist jetzt folgendes eingefallen:
| Code: | FileAppend,,AHK~Tempfile.tmp
FileMove,AHK~Tempfile.tmp,Textfile.txt,1
|
Beim Überschreiben wird das Icon nicht verschoben.
Allerdings muss man hier darauf vertrauen, dass noch keine Datei namens AHK~Tempfile.tmp existiert. Oder aber mit Loop,*.tmp auf höllisch umständliche Weise einen noch nicht benutzten Dateinamen ermitteln.
Gruß
Pumbaa |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Di Apr 25, 2006 4:28 pm Titel: |
|
|
| Code: | IfExist, AHK~Tempfile.tmp
FileDelete, AHK~Tempfile.tmp
FileAppend,,AHK~Tempfile.tmp
FileMove,AHK~Tempfile.tmp,Textfile.txt,1 | Und? |
|
| Nach oben |
|
 |
Pumbaa80 Gast
|
Verfasst am: Mi Apr 26, 2006 2:04 pm Titel: |
|
|
Das Problem ist, dass solche Temp-Dateien, wenn sie existieren, meist einen Sinn haben. Und Löschen könnte unangenehme Folgen haben (z.B. für andere AHK-Skripte, die parallel laufen).
Man braucht also eine Möglichkeit, einen freien Dateinamen zu finden.
Oder man weiß, dass die .TMP nicht anderweitig gebraucht wird. |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Mi Apr 26, 2006 2:19 pm Titel: |
|
|
Und wie wäre es, wenn du einen Loop über die Datei laufen lässt, und einfach jede Zeile mit einem Leerzeichen überschreibst, oder sonst irgendwie leerst?
Oder kann man über die Datei vielleicht ein leere Datei gleichen Namens einfach drüberkopieren - sprich überschreiben?
______________________
Gruß
AGU |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mi Apr 26, 2006 5:48 pm Titel: |
|
|
| Zitat: | | Oder man weiß, dass die .TMP nicht anderweitig gebraucht wird | Eben. Dann schreib ne instant temp
| Code: | MySpecific = %A_Now%
FileAppend,,%MySpecific%.tmp
FileMove,%MySpecific%.tmp,Textfile.txt,1
FileDelete, %MySpecific%.tmp |
|
|
| Nach oben |
|
 |
Pumbaa80 Gast
|
Verfasst am: So Apr 30, 2006 3:06 pm Titel: |
|
|
Das ist eine sehr gute Idee, danke!
@AGU: Loop ist zu umständlich |
|
| Nach oben |
|
 |
Pumbaa80 Gast
|
Verfasst am: Mo Mai 08, 2006 2:57 pm Titel: |
|
|
Und um zu verhindern, dass sich zwei laufende Skripte gegenseitig stören, könnte man noch die PID in den Dateinamen einbauen, dann kann wirklich nichts mehr passieren. Also etwa so:
| Code: | Process,Exist
TempFile = AHK-%Errorlevel%-%A_Now%.tmp
FileAppend,,%TempFile%
FileMove,%Tempfile%,ZuLeerendeDatei.txt,1 |
|
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mo Mai 08, 2006 5:47 pm Titel: |
|
|
Das schreit langsam nach Kanonen und Spatzen Mit der PID brauchs dann aber nicht wirklich noch den TimeStamp ...  |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|