Dateien nach Monaten in Ordner verschieben
Hallo wir haben einen Windows 2003 Server, auf dem viele Dateien anfallen, also *.000.
nun wäre ein Skript schön das wenn es gestartet wird die Dateien in Ordner der Monate verschiebt, also eine Ordner anlegt der z.B.: 0611 heißt.
kann mir jemand dabei helfen so eine Batchdatei zu erstellen?
Danke schonmal für euer Hilfe.
nun wäre ein Skript schön das wenn es gestartet wird die Dateien in Ordner der Monate verschiebt, also eine Ordner anlegt der z.B.: 0611 heißt.
kann mir jemand dabei helfen so eine Batchdatei zu erstellen?
Danke schonmal für euer Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 30.06.2011 um 10:42:11 Uhr
Verschoben von "Windows wohl" nach "Batch & Shell"
Content-ID: 168884
Url: https://administrator.de/contentid/168884
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
20 Kommentare
Neuester Kommentar
Aloha,
wenn du schon eine batch haben möchtest, solltest du den Beitrag dann auch lieber gleich in den richtigen Bereich verschieben.
Aber zum Punkt: Wonach sollen denn die Daten gefiltert werden, sind es wirklich nur
Ein wenig mehr Details wären schon von Vorteil.
greetz André
wenn du schon eine batch haben möchtest, solltest du den Beitrag dann auch lieber gleich in den richtigen Bereich verschieben.
Aber zum Punkt: Wonach sollen denn die Daten gefiltert werden, sind es wirklich nur
*.000
Dateitypen, kann man sie nur anhand deren Erstellungsdatums sortieren oder geben die Dateinamen Ausschluss, wann entschieden werden soll, in welchen Ordner die kommen?Ein wenig mehr Details wären schon von Vorteil.
greetz André
Hallo @ChrisM73,
Sowas hatten wir hier schon öfter.
Da du nach Hilfe suchst und nicht gleich eine komplett angepasste Lösung bekommst, kannst du das Skript hier etwas abwandeln. Macht auch schöne Ausgaben: Datum aus Datei auslesen, Ordner nach Dateidatum erstellen und Datei dorthin kopieren oder verschieben
Gruß
Snow
Sowas hatten wir hier schon öfter.
Da du nach Hilfe suchst und nicht gleich eine komplett angepasste Lösung bekommst, kannst du das Skript hier etwas abwandeln. Macht auch schöne Ausgaben: Datum aus Datei auslesen, Ordner nach Dateidatum erstellen und Datei dorthin kopieren oder verschieben
Gruß
Snow
Hallo ChrisM73,
teste mal das:
Code z.B. als
Es wird das Datum der Erstellung verwendet (
VBScript weil das arbeiten mit Datumswerten in Batch problematisch ist (eingestelltes Datumsformat, Sprachversion von Windows).
Gruß
Friemler
teste mal das:
If WScript.Arguments.Count > 2 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSrcDir = objFSO.GetFolder(WScript.Arguments(1))
Set colAllFiles = objSrcDir.Files
For Each objFile In colAllFiles
If objFSO.GetExtensionName(objFile.Name) = WScript.Arguments(0) Then
strFolderName = Right("0" & Month(objFile.DateCreated), 2) & Right(Year(objFile.DateCreated), 2)
strDestFolder = objFSO.BuildPath(WScript.Arguments(2), strFolderName)
If Not objFSO.FolderExists(strDestFolder) Then
objFSO.CreateFolder(strDestFolder)
End If
objFile.Move objFSO.BuildPath(strDestFolder, objFile.Name)
End If
Next
End If
Code z.B. als
MoveFilesByDate.vbs
speichern. Aufruf:cscript /nologo MoveFilesByDate.vbs "Dateityp, z.B. 000" "Quellverzeichnis" "Zielverzeichnis"
Es wird das Datum der Erstellung verwendet (
DateCreated
in Zeile 8). Wenn das Datum der letzten Änderung verwendet werden soll, stattdessen DateLastAccessed
nehmen.VBScript weil das arbeiten mit Datumswerten in Batch problematisch ist (eingestelltes Datumsformat, Sprachversion von Windows).
Gruß
Friemler
Zitat von @ChrisM73:
Ich habe noch etwas vergessen und zwar gibts in dem Verzeichnis ca. 5 Dateien die nicht verschoben werden drüfen, kann man
die explizit benennen damit dies enicht gelöscht werden?
Ich habe noch etwas vergessen und zwar gibts in dem Verzeichnis ca. 5 Dateien die nicht verschoben werden drüfen, kann man
die explizit benennen damit dies enicht gelöscht werden?
Wenn deine Files normalerweise *.000-Dateien sind und diese 5 nicht, dann ist das bloß eine sehr kleine Modifikation.
builder.bat:
@Echo off
for %%a in (*.000) do (
if NOT "%%a"=="builder.bat" (
if NOT "%%a"=="worker.bat" (
Echo.
Echo Verarbeite Datei %%a
Echo.
Echo ________________________________
Echo.
call worker.bat "%%a"
)
)
)
@Echo off
set file=%1
set fdate=%~t1
set fmonth=%fdate:~3,2%
set fyear=%fdate:~6,4%
set folname=%fyear%_%fmonth%
: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
)
Funktioniert nur auf einem System mit deutschem Datumsformat (Regionaleinstellungen) richtig!
Gruß
Snow
Gewöhn dir bitte an, Code in < code>-Tags zu schreiben.
führe bitte folgendes aus:
Als Aufrufparameter gibst du eine Beliebige Datei an.
Das Ergebnis dann bitte hier posten (in < code>-Tags(!))
Snow
führe bitte folgendes aus:
@Echo off
set file=%1
set fdate=%~t1
set fmonth=%fdate:~3,2%
set fyear=%fdate:~6,4%
set folname=%fyear%_%fmonth%
set f
Echo %date% %time%
Als Aufrufparameter gibst du eine Beliebige Datei an.
Das Ergebnis dann bitte hier posten (in < code>-Tags(!))
Snow
Zitat von @ChrisM73:
E:\Export>test.bat 00109D36.000
fdate=30.06.2011 10:11
file=00109D36.000
fmonth=06
folname=2011_06
FP_NO_HOST_CHECK=NO
fyear=2011
30.06.2011 11:32:27,42
E:\Export>test.bat 00109D36.000
fdate=30.06.2011 10:11
file=00109D36.000
fmonth=06
folname=2011_06
FP_NO_HOST_CHECK=NO
fyear=2011
30.06.2011 11:32:27,42
Also läuft doch alles wie es sollte.
Du hast beim kopieren oder so ein Leerzeichen in mein Skript gebracht, dass da nicht hätte sein sollen.
Einfach nochmal beide in die entsprechenden Dateien (worker.bat und builder.bat) kopieren und nochmal versuchen.
Gruß
Zitat von @Snowman25:
Du hast beim kopieren oder so ein Leerzeichen in mein Skript gebracht, dass da nicht hätte sein sollen.
Du hast beim kopieren oder so ein Leerzeichen in mein Skript gebracht, dass da nicht hätte sein sollen.
Aloha,
genau deshalb sollte man lieber
set "file=%1"
etc. machen, denn die Forensoftware hängt gerne mal ein Leerzeichen hinten an greetz André
Zitat von @Skyemugen:
genau deshalb sollte man lieber
Leerzeichen hinten an
genau deshalb sollte man lieber
set "file=%1"
etc. machen, denn die Forensoftware hängt gerne mal einLeerzeichen hinten an
Ausser, man macht es richig und klickt auf den Quelltext-Link, anstatt die formatierte, lesbar aufbereitete Version zu verwenden.
Zitat von @Snowman25:
Ausser, man macht es richig und klickt auf den Quelltext-Link, anstatt die formatierte, lesbar aufbereitete Version zu verwenden.
Ausser, man macht es richig und klickt auf den Quelltext-Link, anstatt die formatierte, lesbar aufbereitete Version zu verwenden.
Im Quelltext sind die Leerzeichen meist ebenso ... wer kopiert bitte aus den Codeblöcken? ...
Dann bitte noch Wie kann ich einen Beitrag als gelöst markieren? befolgen, danke