Problem Datum in Dateinamen anpassen

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Problem Datum in Dateinamen anpassen

Re: Problem Datum in Dateinamen anpassen

Post by just me » 02 Jul 2018, 11:16

Mir ist nicht klar, woher Du die Dateien in die Zwischenablage kopierst. Ich stolpere auch über die Anweisung

Code: Select all

Transform   , DateiMitPfad, Deref, %A_LoopField%              ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad
Die braucht man nur, wenn die Namen in der Zwischenablage Referenzen auf AHK- oder Umgebungsvariablen enthalten (z.B. %A_WinDir%).

Sei's drum. Wenn Du die Hilfe gelesen hast, solltest Du wissen, dass die Anweisung FileGetAttrib im Erfolgsfall einen oder mehrere Buchstaben in die Ausgabevariable stellt. Dabei steht D für DIRECTORY (Verzeichnis / Ordner).

Code: Select all

LOOP , PARSE, CLIPBOARD, `n, `r                                  ; Abarbeiten aller markierten Dateien
{
   Transform     , DateiMitPfad, Deref, %A_LoopField%            ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad
   FileGetAttrib , Attribute, %DateiMitPfad%                     ; Datei-/Ordnerattribute einlesen
   If (ErrorLevel) Or InStr(Attribute, "D")                      ; kein Zugriff möglich oder es handelt sich um einen Ordner
      Continue                                                   ; -> nächstes Element einlesen
   ...
*ungetestet*

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 02 Jul 2018, 09:05

Code: Select all

#NoEnv                                                           ; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input                                                   ; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%                                      ; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force                                           ; skips the dialog box and replaces the old instance automatically

#IfWinActive, ahk_exe explorer.exe                               ; Script nur ausführen in Windows Explorer
F2::                                                             ; F2 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      ; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       ; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      ; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)  {                                               ; Zeitüberschreitung, nichts kopiert
   MsgBox, Nichts kopiert!
   Return
}
LOOP , PARSE, CLIPBOARD, `n, `r                                  ; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileGetTime , DateiErstellung, %DateiMitPfad%, M              ; Ermitteln des Erstellungsdatums und der Zeit der Datei (M = Änderungsdatum, C = Erstellungsdatum, A = letzter Zugriff) 
   FormatTime  , ZeitStempel , %DateiErstellung%, yyMMdd_'PF'_     ; Formatieren desselben 
   SplitPath   , DateiMitPfad, DateiNameAlt, Verzeichnis, , ,    ; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameoPfad := RegExReplace(DateiNameAlt,"[1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9].", "") ; Entfernen eines evtl. bereits vorhandenen Prefixes 
   DateiNameNeu := Verzeichnis . "\" . ZeitStempel . DateiNameoPfad   ; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMoveDir    , %DateiMitPfad%, %DateiMitPfadNeu%, R            ; Umbenennen der Datei 
} 
RETURN
Script um Ordner und Dateien umzubenennen. Mehrere Dateien zugleich möglich.

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 02 Jul 2018, 09:03

just me wrote:Moin,

:arrow: FileGetAttrib.
Hallo vielen Dank für deinen Input. Bin leider nicht schlau daraus geworden. Was haben diese Attribute mit dem Ordner bzw. Datei zu tun?
Konnte es aber nun über FileMoveDir lösen damit es den Ordner umbenennt, ohne aber den Inhalt zu löschen.
Leider kann ich nun nur noch jeweils 1 Datei/Ordner ändern. Aber lieber so als das Risiko zu haben den ganzen Inhalt zu löschen.


Aber sollte es durch den Loop nicht jede Datei einzeln behandeln? Dann müssten doch auch mehrere Dateien gehen obwohl ich FileMoveDir verwende statt den FileMove.
Habe ich hier einen Überlegungsfehler?


Edit: Hatte im Testscript einen Fehler. Läuft alles wie es sollte :)

Re: Problem Datum in Dateinamen anpassen

Post by just me » 02 Jul 2018, 04:57

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 02 Jul 2018, 02:44

Hat hier keiner eine Idee wie man das Script auf einen Ordner verhindern oder einbinden kann? Ist aktuell ziemlich gefährlich wenn man das Script auf einen Ordner anwendet. Es werden dann alle Dateien im Ordner gelöscht.

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 20 Jun 2018, 09:29

Fuxxli wrote:Vielen Dank :)
Habe dies nun auch eingebaut, jedoch die MsgBox, Clipboard = %Clipboard% weggelassen, da es mir dann anzeigt was kopiert wurde und ich jedes Mal bestätigen muss.
Funktioniert aber alles so wie es soll.

Besten Dank für eure Hilfe :)

Code: Select all

#NoEnv                                                           ; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input                                                   ; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%                                      ; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force                                           ; skips the dialog box and replaces the old instance automatically

#IfWinActive, ahk_exe explorer.exe                               ; Script nur ausführen in Windows Explorer
F2::                                                             ; F2 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      ; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       ; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      ; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)  {                                               ; Zeitüberschreitung, nichts kopiert
   MsgBox, Nichts kopiert!
   Return
}
LOOP , PARSE, CLIPBOARD, `n, `r                                  ; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileGetTime , DateiErstellung, %DateiMitPfad%, M              ; Ermitteln des Erstellungsdatums und der Zeit der Datei (M = Änderungsdatum, C = Erstellungsdatum, A = letzter Zugriff) 
   FormatTime  , ZeitStempel , %DateiErstellung%, yyMMdd_PF_     ; Formatieren desselben 
   SplitPath   , DateiMitPfad, DateiNameAlt, Verzeichnis, , ,    ; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameoPfad := RegExReplace(DateiNameAlt,"[1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9].", "") ; Entfernen eines evtl. bereits vorhandenen Prefixes 
   DateiNameNeu := Verzeichnis . "\" . ZeitStempel . DateiNameoPfad   ; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMove    , %DateiMitPfad%, %DateiMitPfadNeu%, 1            ; Umbenennen der Datei 
} 
RETURN
Hier ist der fertige Code wenn jemand diesen auch möchte.
Nun ist wieder etwas aufgetreten. Um die Datei umzubennen funktioniert es super. Jedoch wenn man dies unachtsamerweise auf einen Ordner anwendet, wird dieser zwar nicht umbenennt aber die darin enthalten Dateien werden gelöscht. Unterordner und die darin enthaltenen Dateien werden jedoch nicht gelöscht. Es sind die Dateien, welche sich direkt in diesem Ordner befinden betroffen.

Kann man die Funktion auf einen Ordner unterbinden oder wie schaffe ich es, dass der Ordner umbenennt werden kann, aber die darin enthaltenen Dateien unangetastet bleiben?

Evtl. hab ihr auch einen Input in welcher Richtung ich suchen muss.

Vielen Dank :)

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 14 Jun 2018, 09:30

oh vielen Dank :)

Wenn man nur wüsste wonach man suchen muss :)

Re: Problem Datum in Dateinamen anpassen

Post by just me » 14 Jun 2018, 09:22

Wie schaffe ich es, dass es den Kürzel nicht als Monat ausgibt sondern effektiv als M?
Z.B., indem Du Dir die Dokumentation zu FormatTime anschaust. ;)
(Stichwort: Hochkommas)

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 14 Jun 2018, 08:35

Hallo zusammen
Heute habe ich dieses Script für eine weitere Person eingerichtet. Jedoch hat diese das Kürzel TM statt PF. Sprich vor die Datei kommt yyMMdd_TM_

Jedoch gibt es das M als Monat aus. Wie schaffe ich es, dass es den Kürzel nicht als Monat ausgibt sondern effektiv als M?

Vielen Dank für eure Hilfe :)

Re: Problem Datum in Dateinamen anpassen

Post by just me » 26 Apr 2018, 03:52

Moin,

die Änderung war auch mehr zum Testen gedacht. Die Anweisung MsgBox, Clipboard = %Clipboard% sollte dabei nur klären, ob ab und zu irgendein Unsinn ins Clipboard copiert wird, mit dem Dein Skript nichts anfangen kann.

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 26 Apr 2018, 00:11

Vielen Dank :)
Habe dies nun auch eingebaut, jedoch die MsgBox, Clipboard = %Clipboard% weggelassen, da es mir dann anzeigt was kopiert wurde und ich jedes Mal bestätigen muss.
Funktioniert aber alles so wie es soll.

Besten Dank für eure Hilfe :)

Code: Select all

#NoEnv                                                           ; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input                                                   ; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%                                      ; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force                                           ; skips the dialog box and replaces the old instance automatically

#IfWinActive, ahk_exe explorer.exe                               ; Script nur ausführen in Windows Explorer
F2::                                                             ; F2 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      ; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       ; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      ; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)  {                                               ; Zeitüberschreitung, nichts kopiert
   MsgBox, Nichts kopiert!
   Return
}
LOOP , PARSE, CLIPBOARD, `n, `r                                  ; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileGetTime , DateiErstellung, %DateiMitPfad%, M              ; Ermitteln des Erstellungsdatums und der Zeit der Datei (M = Änderungsdatum, C = Erstellungsdatum, A = letzter Zugriff) 
   FormatTime  , ZeitStempel , %DateiErstellung%, yyMMdd_PF_     ; Formatieren desselben 
   SplitPath   , DateiMitPfad, DateiNameAlt, Verzeichnis, , ,    ; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameoPfad := RegExReplace(DateiNameAlt,"[1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9].", "") ; Entfernen eines evtl. bereits vorhandenen Prefixes 
   DateiNameNeu := Verzeichnis . "\" . ZeitStempel . DateiNameoPfad   ; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMove    , %DateiMitPfad%, %DateiMitPfadNeu%, 1            ; Umbenennen der Datei 
} 
RETURN
Hier ist der fertige Code wenn jemand diesen auch möchte.

Re: Problem Datum in Dateinamen anpassen

Post by just me » 18 Apr 2018, 12:04

Moin,

bau doch mal folgende Änderung ein:

Code: Select all

...
CLIPBOARD =                                                      ; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       ; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      ; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)  {                                               ; Zeitüberschreitung, nichts kopiert
   MsgBox, Nichts kopiert!
   Return
}
MsgBox, Clipboard = %Clipboard%
...
Dann kannst Du sehen, wenn/wann das Kopieren nicht klappt bzw. was kopiert wurde.

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 17 Apr 2018, 07:55

Ja manuell habe ich auch kein Problem, nur mit dem Script zeigt es so seine Macken. Hin und wieder geht es dennoch, aber am besten funktionierts definitiv wenn die Vorschau ausgeschaltet ist.

Re: Problem Datum in Dateinamen anpassen

Post by BoBo » 17 Apr 2018, 07:25

Manuell kann ich die umbenennung einer selektierten (txt)datei mittels F2 bei gleichzeitiger anzeige im explorer-preview pane problemlos machen. :?:

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 17 Apr 2018, 04:59

Hallo zusammen

Ich habe den Code angepasst und bin schon fast glücklich damit :)
Datei umbenennen funktioniert soweit, das Problem ist aber wenn ich in der Ordneransicht das Vorschaufenster der Datei eingestellt habe kann ich die Datei nicht umbenennen.
Finde diese Ansicht doch recht praktisch und würde diese ungern deaktivieren.

Kennt jemand eine Möglichkeit dies zu umgehen?

Code: Select all

#NoEnv                                                           ; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input                                                   ; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%                                      ; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force                                           ; skips the dialog box and replaces the old instance automatically

#IfWinActive, ahk_exe explorer.exe                               ; Script nur ausführen in Windows Explorer
F2::                                                             ; F2 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      ; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       ; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      ; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)                                                  ; Zeitüberschreitung, nichts kopiert
   Return
LOOP , PARSE, CLIPBOARD, `n, `r                                  ; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileGetTime , DateiErstellung, %DateiMitPfad%, M              ; Ermitteln des Erstellungsdatums und der Zeit der Datei (M = Änderungsdatum, C = Erstellungsdatum, A = letzter Zugriff) 
   FormatTime  , ZeitStempel , %DateiErstellung%, yyMMdd_PF_     ; Formatieren desselben 
   SplitPath   , DateiMitPfad, DateiNameAlt, Verzeichnis, , ,    ; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameoPfad := RegExReplace(DateiNameAlt,"[1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9].", "") ; Entfernen eines evtl. bereits vorhandenen Prefixes 
   DateiNameNeu := Verzeichnis . "\" . ZeitStempel . DateiNameoPfad   ; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMove    , %DateiMitPfad%, %DateiMitPfadNeu%, 1            ; Umbenennen der Datei 
} 
RETURN 

Re: Problem Datum in Dateinamen anpassen

Post by just me » 16 Apr 2018, 10:51

Ich denke, Deine Hoffnung wird sich erfüllen. ;)

Re: Problem Datum in Dateinamen anpassen

Post by Fuxxli » 16 Apr 2018, 10:44

Wow vielen Dank für die schnelle Antwort.
Nach den ersten paar Versuchen läuft noch alles, wenn mal nichts kopiert wird hängt es nicht und ich kann nochmals versuchen.

Genial :)

Werde es morgen noch ein bisschen austesten und hoffe, dass es weiterhin funktioniert.

Re: Problem Datum in Dateinamen anpassen

Post by just me » 16 Apr 2018, 08:48

Moin,

das Skript sollte bei ClipWait nur hängenbleiben, wenn Send {Ctrl Down}c{Ctrl Up} nichts in die Zwischenablage kopiert. Auch dafür gibt es für ClipWait einen Parameter Wartezeit. Bei Zeitüberschreitung wird die interne Variable ErrorLevel auf 1 gesetzt.

Code: Select all

ClipWait, 1 ; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel) ; Zeitüberschreitung, nichts kopiert
   Return

Problem Datum in Dateinamen anpassen

Post by Fuxxli » 16 Apr 2018, 08:02

Hallo zusammen

Ich bin neu hier mit AHK und wollte ein Script um bei Dateien automatisch das Erstellungsdatum inkl. meinem Kürzel per Hotkey anzupassen.
Problematik hier ist folgende:
Das Script funktioniert 2-3 mal und dann hängt es bei CLIPWAIT
Es geht teilweise erst wieder wenn das Script neu gestartet wird. Sobald das Script im CLIPWAIT hängt, kann ich auch keine Dateien normal mit ctrl+c und ctrl+v kopieren.
Ich erhalte dann Meldung "Element wurde nicht gefunden"

Ich habe versucht per Google eine Lösung zu finden, aber ich fürchte ich kenne die richtigen Schlüsselwörter nicht um das Problem genau beschreiben zu können.

Ich arbeite mit Windows 10.

Das komische ist effektiv, dass die Anzahl wievielmal das Script funktioniert recht variiert, mal mehr mal weniger.
Hoffe jemand hat hier eine Idee. Wäre echt hilfreich :)

Vielen Dank für eure Hilfe und falls ihr mehr Angaben braucht einfach melden.

Code: Select all

#NoEnv  ; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input  ; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%  ; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force ; skips the dialog box and replaces the old instance automatically

F2::                                                             ; F2 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      ; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       ; aktuell markierte Dateien kopieren 
CLIPWAIT                                                         ; warten auf die Zwischenablage 
LOOP , PARSE, CLIPBOARD, `n, `r                                  ; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileGetTime , DateiErstellung, %DateiMitPfad%, M              ; Ermitteln des Erstellungsdatums und der Zeit der Datei (M = Änderungsdatum, C = Erstellungsdatum, A = letzter Zugriff) 
   FormatTime  , ZeitStempel , %DateiErstellung%, yyMMdd_PF_     ; Formatieren desselben 
   SplitPath   , DateiMitPfad, DateiNameAlt, Verzeichnis, , ,    ; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameoPfad := RegExReplace(DateiNameAlt,"[1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9].", "") ; Entfernen eines evtl. bereits vorhandenen Prefixes 
   DateiNameNeu := Verzeichnis . "\" . ZeitStempel . DateiNameoPfad   ; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          ; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMove    , %DateiMitPfad%, %DateiMitPfadNeu%, 1            ; Umbenennen der Datei 
} 
RETURN 

Top