Hallo!
Ich habe mit der Suchfunktion leider nichts passendes gefunden.
Meine Frage:
Gibt es die Möglichkeit, Dateien in einen Ordner zu kopieren/verschieben, wobei der Zielordner automatisch das Datum der Datei erhält?
Der Ordnername sollte nach dem Schema
yyyy_mm_dd
lauten (z.B. 2009_12_03)
Dateien in Ordner mit derem Datum kopieren/verschieben
Moderators: Hacker, Stefan2, white
Dateien in Ordner mit derem Datum kopieren/verschieben
Vielen Dank!
Traveller
Traveller
- ghisler(Author)
- Site Admin
- Posts: 50679
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Nein, jedenfalls nicht mit Total Commander, sorry.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
2traveller
Ich habe mal ein bisschen Code-Recycling betrieben MoveFiles2SubFolders
1) Den fogenden Code-Block markieren und als MoveFiles2SubFolders(filedate).vbs abspeichern.
2) die Datei MoveFiles2SubFolders(filedate).vbs auf die Buttonleiste ziehen
3) Kontextmenu "Ändern" des neuen Buttons auswählen, und unter Parameter:
4) Dateien markieren und dann den Button betätigen.
Bei Bedarf die Zeile
HTH
Holger
Ich habe mal ein bisschen Code-Recycling betrieben MoveFiles2SubFolders

1) Den fogenden Code-Block markieren und als MoveFiles2SubFolders(filedate).vbs abspeichern.
Code: Select all
'Command : MoveFiles2SubFolders(filedate).vbs
'Parameters: "%L" -1
'Tooltip : move all marked files into subfolder with the file's date "yyyy_mm_dd"
' # first parameter %L Name of a list file with long file names including the complete path
' # (opt) second parameter (silent mode) if set to 0. all expected error messages are skipped
'________________
' http://classicasp.aspfaq.com/date-time-routines-manipulation/can-i-make-vbscript-format-dates-for-me.html
Function Format(vExpression, sFormat)
set fmt = CreateObject("MSSTDFMT.StdDataFormat")
fmt.Format = sFormat
set rs = CreateObject("ADODB.Recordset")
rs.Fields.Append "fldExpression", 12 ' adVariant
rs.Open
rs.AddNew
set rs("fldExpression").DataFormat = fmt
rs("fldExpression").Value = vExpression
Format = rs("fldExpression").Value
rs.close: Set rs = Nothing: Set fmt = Nothing
End Function
' sample usage:
'response.write format(now(), "yyyy-mm-dd")
'response.write "<br>"
'response.write format(time(), "hh:mm")
'________________
Const FOR_READING = 1
sFileList = WScript.arguments.Item( 0 )
bSilent = false
If WScript.arguments.Count > 1 Then If WScript.arguments.Item( 1 ) = 0 Then bSilent = true
Set oFSO = CreateObject( "Scripting.FileSystemObject" )
If oFSO.FileExists(sFileList) Then
Set oTextStream = oFSO.OpenTextFile( sFileList, FOR_READING )
Do Until oTextStream.AtEndOfStream
sFilePathName = oTextStream.ReadLine
If oFSO.FileExists( sFilePathName ) Then
sPath = oFSO.GetParentFolderName( sFilePathName )
sName = oFSO.GetBaseName( sFilePathName )
sExtension = oFSO.GetExtensionName( sFilePathName )
Set f = oFSO.GetFile(sFilePathName)
sDate = format(f.DateLastModified, "yyyy_mm_dd")
sNewPath = sPath & "\" & sDate
sNewFilePathName = sNewPath & "\" & sName & "." & sExtension
If Not oFSO.FolderExists( sNewPath ) Then
oFSO.CreateFolder( sNewPath )
End If
If Not oFSO.FileExists( sNewFilePathName ) Then
oFSO.MoveFile sFilePathName, sNewFilePathName
ElseIf not bSilent then
WScript.Echo "Destination File exists (skipped)!: " & sNewFilePathName
End If
End If
Loop
oTextStream.Close
Else
WScript.Echo "Input file list " & sFileList & " not found."
End If
3) Kontextmenu "Ändern" des neuen Buttons auswählen, und unter Parameter:
eintragen."%L"
4) Dateien markieren und dann den Button betätigen.
Bei Bedarf die Zeile
anpassen, um eine anderes Datumsformat oder z.B. DateCreated zu erhalten.Date = format(f.DateLastModified, "yyyy_mm_dd")
HTH
Holger
Hallo Holger!
Da ich sehr ungeduldig bin/war hatte ich im Forum
admin.de auch die Frage gestellt.
Dort gab mir jemand diese Batch Dateien:
1. builder.bat
2. worker.bat
Alle Dateien, die man nach dem Muster
yyyy_mm_dd
sortieren möchte in ein Verzeichnis kopieren/verschieben.
Dorthin auch die beiden Batch Dateien KOPIEREN!
die builder.bat ausführen und schon ist in sekundenschnelle alles sortiert.
Über 500 Bilder waren bei mir in weniger als 5 Sekunden sortiert.
Wie das Verzeichnis aussehen soll kann man in der worker.bat in der Zeile
set folname=%fyear%_%fmonth%_%fday%
anpassen.
Trotzdem vielen Dank für die Hilfe!
@ghisler(Author)
Eigentlich schade.
Es gibt doch mit Strg+M das Mehrfach-Umbenenn-Tool.
Und dort kann ich unter
Plugin/tc
auch einen Pfad eingeben oder den Dateinamen nach der Erstellzeit der Datei bestimmen.
Läßt sich programmiertechnisch nicht das von mir gewünschte Ziel einbauen?
Da ich sehr ungeduldig bin/war hatte ich im Forum
admin.de auch die Frage gestellt.
Dort gab mir jemand diese Batch Dateien:
1. builder.bat
Code: Select all
@Echo off
for %%a in (*) do (
Echo.
Echo Verarbeite Datei %%a
Echo.
Echo ________________________________
Echo.
call worker.bat "%%a"
)
Code: Select all
@Echo off
set file=%1
set fdate=%~t1
set fday=%fdate:~0,2%
set fmonth=%fdate:~3,2%
set fyear=%fdate:~6,4%
set folname=%fyear%_%fmonth%_%fday%
:work
if exist %folname%\NUL (
Echo Verschiebe Datei %file% nach %folname%
Echo ----
move %file% "%folname%\"%file%
) else (
Echo Erstelle Verzeichnis %folname%
Echo ----
md "%folname%"
goto work
)
yyyy_mm_dd
sortieren möchte in ein Verzeichnis kopieren/verschieben.
Dorthin auch die beiden Batch Dateien KOPIEREN!
die builder.bat ausführen und schon ist in sekundenschnelle alles sortiert.
Über 500 Bilder waren bei mir in weniger als 5 Sekunden sortiert.
Wie das Verzeichnis aussehen soll kann man in der worker.bat in der Zeile
set folname=%fyear%_%fmonth%_%fday%
anpassen.
Trotzdem vielen Dank für die Hilfe!
@ghisler(Author)
Eigentlich schade.
Es gibt doch mit Strg+M das Mehrfach-Umbenenn-Tool.
Und dort kann ich unter
Plugin/tc
auch einen Pfad eingeben oder den Dateinamen nach der Erstellzeit der Datei bestimmen.
Läßt sich programmiertechnisch nicht das von mir gewünschte Ziel einbauen?
Vielen Dank!
Traveller
Traveller
Muss gestehen dass es wirklich praktisch wäre, wenn man per MultiUmbenennen auch verschieben könnte (mit der Eingabe eines \ in das Umbenenne-zu-Fenster) ... durfte gerade 8000 Bilder einer Webcam sortieren, war kein Spass so.
Und wenn ich gerade dabei bin: Wenn man . durch Leerschlag ersetzt, dann geht auch der Punkt vor der Dateiendung flöten. Das ist schade.
Und wenn ich gerade dabei bin: Wenn man . durch Leerschlag ersetzt, dann geht auch der Punkt vor der Dateiendung flöten. Das ist schade.
Relatives(gleiches Laufwerk) Verschieben in existierende Verzeichnisse geht mit einem Trick: siehe http://ghisler.ch/board/viewtopic.php?p=146655#146655wenn man per MultiUmbenennen auch verschieben könnte
Umbenennen von Punkt nach Leerzeichen geht z.B. mittels
Name: [N]
Erweiterung: #[E]
Suchen nach: .|_#
Ersetzen durch: _|.
_ im obigen Beispiel durch <Leerzeichen> ersetzen.
Aber ich stimme zu, es wäre intuitiver wenn man beim Suche und Ersetzen im MUT eine Checkbox "[x] nur Name" hätte.
HTH
Holger