Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 30.06.2011 um 10:42:11 Uhr
Verschoben von "Windows wohl" nach "Batch & Shell"

gelöst Dateien nach Monaten in Ordner verschieben

Mitglied: ChrisM73

ChrisM73 (Level 1) - Jetzt verbinden

30.06.2011, aktualisiert 10:42 Uhr, 3321 Aufrufe, 20 Kommentare

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.
Mitglied: Skyemugen
30.06.2011 um 09:01 Uhr
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 *.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é
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 09:05 Uhr
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
Bitte warten ..
Mitglied: Friemler
30.06.2011 um 09:22 Uhr
Hallo ChrisM73,

teste mal das:
01.
If WScript.Arguments.Count > 2 Then 
02.
  Set objFSO         = CreateObject("Scripting.FileSystemObject") 
03.
  Set objSrcDir      = objFSO.GetFolder(WScript.Arguments(1)) 
04.
  Set colAllFiles    = objSrcDir.Files 
05.
 
06.
  For Each objFile In colAllFiles 
07.
    If objFSO.GetExtensionName(objFile.Name) = WScript.Arguments(0) Then 
08.
      strFolderName = Right("0" & Month(objFile.DateCreated), 2) & Right(Year(objFile.DateCreated), 2) 
09.
 
10.
      strDestFolder = objFSO.BuildPath(WScript.Arguments(2), strFolderName) 
11.
 
12.
      If Not objFSO.FolderExists(strDestFolder) Then 
13.
        objFSO.CreateFolder(strDestFolder) 
14.
      End If 
15.
 
16.
      objFile.Move objFSO.BuildPath(strDestFolder, objFile.Name) 
17.
    End If 
18.
  Next 
19.
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
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 09:46 Uhr
Hallo Snowman25,

also müßte ich das worker.bat folgendermaßen abändern, damit nur Monate und nicht auch Tage einsortiert werden:

@Echo off
set file=%1
set fdate=%~t1

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
)

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?
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 10:10 Uhr
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?

Wenn deine Files normalerweise *.000-Dateien sind und diese 5 nicht, dann ist das bloß eine sehr kleine Modifikation.

builder.bat:
01.
@Echo off 
02.
for %%a in (*.000) do ( 
03.
	if NOT "%%a"=="builder.bat" ( 
04.
		if NOT "%%a"=="worker.bat" ( 
05.
			Echo. 
06.
			Echo Verarbeite Datei %%a 
07.
			Echo. 
08.
			Echo ________________________________ 
09.
			Echo. 
10.
			call worker.bat "%%a" 
11.
12.
13.
)
worker.bat:
01.
@Echo off 
02.
set file=%1 
03.
set fdate=%~t1 
04.
set fmonth=%fdate:~3,2% 
05.
set fyear=%fdate:~6,4% 
06.
set folname=%fyear%_%fmonth% 
07.
:work 
08.
if exist %folname%\NUL ( 
09.
	Echo Verschiebe Datei %file% nach %folname% 
10.
	Echo ---- 
11.
	move %file% "%folname%\"%file%  
12.
) else ( 
13.
	Echo Erstelle Verzeichnis %folname% 
14.
	Echo ---- 
15.
	md "%folname%" 
16.
	goto work 
17.
)
Funktioniert nur auf einem System mit deutschem Datumsformat (Regionaleinstellungen) richtig!

Gruß
Snow
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 10:12 Uhr
es sind 2 *.000 Dateien und eine *.bat Datei.
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 10:16 Uhr
Das Skript verschiebt jetzt eh bloß *.000 Dateien.
Die 2, die nicht verschoben werden sollen, musst du genauso in der builder.bat 'ausklammern', wie schon worker.bat und builder.bat.
Eigentlich kannst du die Dateinamen in Zeile 3 und 4 gleich gegen deine austauschen.

Gruß
Snow
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 10:50 Uhr
habe es also so abgeändert:

@Echo off
for %%a in (*.000) do (
if NOT "%%a"=="xxx.000" (
if NOT "%%a"=="xxx.000" (
if NOT "%%a"=="xxx000" (
Echo.
Echo Verarbeite Datei %%a
Echo.
Echo ________________________________
Echo.
call worker.bat "%%a"
)
)
)
)

den Ordner hat er angelegt aber es kommen folgende Fehlermeldungen:


Ein Unterverzeichnis oder eine Datei mit dem Namen "2011 _06 " existiert bereit
s.
Der Befehl "_06" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Verschiebe Datei "001002E1.000" nach 2011 _06
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) verschoben.
Erstelle Verzeichnis 2011 _06
Ein Unterverzeichnis oder eine Datei mit dem Namen "2011 _06 " existiert bereit
s.
Der Befehl "_06" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Verschiebe Datei "001002E1.000" nach 2011 _06
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) verschoben.
Erstelle Verzeichnis 2011 _06
Ein Unterverzeichnis oder eine Datei mit dem Namen "2011 _06 " existiert bereit
s.
Der Befehl "_06" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 11:03 Uhr
Gewöhn dir bitte an, Code in < code>-Tags zu schreiben.
führe bitte folgendes aus:
01.
@Echo off 
02.
set file=%1 
03.
set fdate=%~t1 
04.
set fmonth=%fdate:~3,2% 
05.
set fyear=%fdate:~6,4% 
06.
set folname=%fyear%_%fmonth% 
07.
set f 
08.
Echo %date% %time%
Als Aufrufparameter gibst du eine Beliebige Datei an.
Das Ergebnis dann bitte hier posten (in < code>-Tags(!))

Snow
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 11:24 Uhr
Hallo also das Ergebnis ist:

E:\Export>test.bat
fmonth=~3,2
folname=~6,4_~3,2
FP_NO_HOST_CHECK=NO
fyear=~6,4
30.06.2011 11:23:55,96
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 11:28 Uhr
Zitat von Snowman25:
__Als Aufrufparameter gibst du eine Beliebige Datei an.__
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 11:33 Uhr
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
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 12:04 Uhr
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

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ß
Bitte warten ..
Mitglied: Skyemugen
30.06.2011 um 12:19 Uhr
Zitat von Snowman25:
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é
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 12:28 Uhr
Zitat von Skyemugen:
genau deshalb sollte man lieber set "file=%1" etc. machen, denn die Forensoftware hängt gerne mal ein
Leerzeichen hinten an

Ausser, man macht es richig und klickt auf den Quelltext-Link, anstatt die formatierte, lesbar aufbereitete Version zu verwenden.
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 12:30 Uhr
ok jetzt hat er die Dateien in den Ordner kopiert, aber die bleiben ja im Hauptverzeichnis stehen, obwohl es doch ein move-Befehl ist, wäre schon besser wenn er die einfach verschieben würde...
Bitte warten ..
Mitglied: Skyemugen
30.06.2011 um 12:37 Uhr
Zitat von Snowman25:
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? ...
Bitte warten ..
Mitglied: Snowman25
30.06.2011 um 12:47 Uhr
Sollte er auch. Und für sowas ist ja auch die Textausgabe da...
Bitte warten ..
Mitglied: ChrisM73
30.06.2011 um 15:35 Uhr
hm ok stimmt der hat verschoben, allerdings nur einen teil der Dateien, dann hat er abgebrochen. Deshalb dachte ich das die Dateien nur kopiert sind, weil es wirklich sehr viele Dateien sind. Es hat 3 mal abgebrochen, aber nun hat das Programm alles schön verschoben
vielen Dank für deine Hilfe und Geduld.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Skript soll Dateien in "Monats" Ordner kopieren

gelöst Frage von agnostikerBatch & Shell11 Kommentare

Ziel: Alle Dateien die innerhalb des letzten Monats erstellt wurden in einen Ordner kopieren der den Namen des aktuellen ...

Windows Netzwerk

Dateien und Ordner verschieben mit Rückfrage

Frage von steftsWindows Netzwerk1 Kommentar

Hallo, in einer Windows Server-Client Umgebung habe ich folgende Anforderung: Dateien und Ordner die auf einem Netzwerk Fileshare liegen, ...

Batch & Shell

Verschieben von Dateien in zugehörige Ordner

Frage von vmihaylovBatch & Shell5 Kommentare

Hallo allerseits! Ich habe in einem Ordner sehr viele Dateien mit Artikelnummern als Namen (z.B. 123456.tiff, 123456.jpg, 215456.jpg,215456,tiff,), die ...

Batch & Shell

Ordner durchsuchen - wenn "bestimmter Text" in einer Datei enthalten, diese Datei in einen anderen Ordner kopieren oder verschieben

gelöst Frage von ConcurveBatch & Shell14 Kommentare

Hallo zusammen, ich habe ein Problem bei der Erstellung einer *.bat, welche innerhalb eines zu definierenden Ordners alle Dateien ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 15 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 21 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...