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

gelöst (Batch) Datum Sortier-Mechanismus

Mitglied: clragon

clragon (Level 1) - Jetzt verbinden

13.09.2016 um 23:09 Uhr, 1090 Aufrufe, 19 Kommentare, 3 Danke

Hallo zusammen.
Ich bin schon etwas länger am Batch schreiben, und war schon oft uneingeloggt hier, und jetzt hab ich ein Problem bei dem ich gerne selbst Fragen würde.
Es geht darum das ich gerade eine Batch baue die Dateien, in meinem Fall Bilder, im aktuellen Ordner nach erstell-Datum sortiert. Der aktuelle Code macht etwa das:
Der aktuelle Pfad wird genommen - Alle Kreations-daten werden mit Datum und Zeit in eine TXT geschrieben, dann von einem mir unbekannten codeblock sortiert ( kopierter codeblock :sort )
und dann Sortiert in eine neue TXT ausgegeben. Mein Problem: die Sortierung fällt etwas falsch aus & stimmt aus irgendwelchen Gründen nicht immer + Da ich den Block nicht verstehe, kann ich ihn nicht meinen Bedürfnissen anpassen.

System Infos:
Windows 10
cmd, keine Zusatz-tools ausser compiler

hier ein Ausschnitt des ganzen:
01.
FOR /F "tokens=*" %%A in ('DIR /A:-D /B %folder%') do ( call :gDate "%%~fA" )
02.

03.
:gDate <File>
04.
set "gFile=%~1" & set "gFate="
05.
FOR /F "usebackq" %%B in (`wmic datafile where "Name='%gFile:\=\\%'" get^ creationdate^|find "+"`) do ( set gFate=%%~B )
06.
echo=%~nx1,%gFate:~6,2%/%gFate:~4,2%/%gFate:~,4% %gFate:~8,2%:%gFate:~10,2%;%gFate:~12,2%>>file2.txt
07.
exit /b
08.

09.

10.
:sort
11.
(
12.
FOR /f "tokens=1*delims=, " %%h IN (file2.txt) DO (
13.
 FOR /f "tokens=1-7delims=/: " %%a IN ("%%i") DO (
14.
  SET /a rmonth=10+%%a
15.
  SET /a rday=10+%%b
16.
  SET /a rhour=10+%%d
17.
  IF %%d==12 (SET rhour=10)
18.
  ECHO %%c!rmonth!!rday!%%f!rhour!%%e,%%h,%%i
19.
 )
20.
)
21.
)>sorttemp.txt
22.
(
23.
FOR /f "tokens=1*delims=," %%i IN ('sort ^<sorttemp.txt') DO ECHO %%j
24.
)>output.txt
25.
TYPE output.txt
26.
DEL sorttemp.txt /F /Q
27.

28.
pause >nul
29.
exit
Und hier ein paste des Outputs: http://pastebin.com/GYLmDH2w

wäre echt nett wenn mir jemand dabei helfen könnte ~
Lg clragon
Mitglied: bastla
13.09.2016 um 23:31 Uhr
Hallo clragon und willkommen als Mitglied im Forum!

Was ist denn Dein gewünschtes Ergebnis? Nach Erstellungsdatum sortieren kann dir auch selbst - im einfachsten Fall:
dir  /a-d /tc /od %folder%
An Dein Beispiel angepasst dann etwa so (mit Formatierung von Datum und Zeit lt Systemeinstellung):
01.
set "output=D:\output.txt"
02.
:: in den Ordner %folder% wechseln
03.
pushd "%folder%"
04.
:: ev vorhandene Ausgabedatei löschen
05.
del "%output%" 2>nul
06.
:: sortierte Liste erzeugen
07.
for /f "delims=" %%i in ('dir /b /a-d /tc /od') do for /f "tokens=1-2" %%a in ("%%~ti") do >>"%output%" echo %%i,%%a,%%b
08.
:: zurück zum ursprünglichen Ordner
09.
popd
Grüße
bastla
Bitte warten ..
Mitglied: clragon
14.09.2016, aktualisiert um 07:59 Uhr
Hallo Basta, schön mal in Echtzeit mit dir zu schreiben, hab deinen Namen schon so oft gesehen wenn ich Grade eine Lösung gesucht habe!
Also soweit ich weiss und das ausprobiert habe, gibt der tc switch nicht das eigentliche Erstellungsdatum aus sondern nur das letzte änderungsdatum. Ich brauche aber das Erstellungsdatum, und das funktioniert mit wmic auch ganz gut, nur meine Sortierung ist etwas irreführend. Ich möchte ganz gerne den Namen am Schluss, das Datum und die zeit am Anfang jeder Zeile, ( File2.txt ) das wäre ja kein Problem, ich könnte einfach die parameter umstellen, jedoch frisst der sortiert Mechanismus :sort das dann nicht mehr, und ich wess nicht wie er genau funktioniert, also kann ich ihn auch nicht ändern...
Edit: Das Ergebnis das ich gerne hätte ist eine TXT mit den Namen aller Dateien des aktuellen Ordners, dem Datum und der Zeit ihrer Erstellung. Weiterführend würde mein Script dann diese Dateien umbenennen, mit einer 4 stelligen Zahl startend mit der ältesten Datei. Das kann ich aber auch selber. Mit geht es nur darum das ich den :sort Mechanismus verstehe und beherrsche.
Bitte warten ..
Mitglied: 129813
14.09.2016, aktualisiert um 08:22 Uhr
Sorting? No problem at all...
01.
@echo off
02.
Powershell -Executionpolicy ByPass -Command "gci '.\*' -File | sort CreationTime | ft Name,CreationTime -AutoSize -Wrap" >Output.txt
Regards
Bitte warten ..
Mitglied: clragon
14.09.2016 um 13:01 Uhr
I gonna give it a try, but I highly prefer pure batch solutions...
Bitte warten ..
Mitglied: 129813
14.09.2016 um 13:09 Uhr
Zitat von clragon:
but I highly prefer pure batch solutions...
Your solution above is also not pure batch, sort/wmic etc. are also external tools like powershell.exe is
Bitte warten ..
Mitglied: clragon
14.09.2016 um 13:16 Uhr
But power shell work's only above Windows 7, and I can't inbind the whole shell while compiling, and I guess wmic would work in XP, if I'm wrong, I could bind wmic in, otherwise, my solution is as "wrong" as yours...
Bitte warten ..
Mitglied: 129813
14.09.2016, aktualisiert um 13:19 Uhr
Zitat von clragon:
But power shell work's only above Windows 7,
No, XP can run the powershell as well, from Vista upwards its already integrated by default
and I can't inbind the whole shell while compiling,
What do you compile where?? You don't need to compile batch, it's done automatically.
Bitte warten ..
Mitglied: clragon
14.09.2016 um 13:24 Uhr
when a batch needs extensions, like consolenoclose, I compile them into exe flies to garantee acces to those.
if there is no wmic in XP or Vista, I would just inbind wmic, but also that solution would be completely wrong, because I want a batch who works on all windows versions without compiling it.
btw why was powershell even EVERYTHING invented, why they didn't updated batch...
I hate power shell.
but if your snippet works like it should, I gonna take it as solution.
Bitte warten ..
Mitglied: 129813
14.09.2016, aktualisiert um 13:29 Uhr
I hate power shell.
That is always said by people who don't know it

I would rather write a c#/C/AutoIT app where every dependencies are included by default.

Packing batches in exes is bullshit (most antivirus claim that they are suspicious)
Bitte warten ..
Mitglied: clragon
14.09.2016 um 13:28 Uhr
I'm anyways learning C#, but until it's done I'm messing around with the capability of batches , because I learned them first.
Bitte warten ..
Mitglied: clragon
14.09.2016 um 13:41 Uhr
Okey okey okey, that's a cool thingy you got there. is there a in-comand-parameter to remove Name und creation Date line title, or do i need to remove them by myself?
Bitte warten ..
Mitglied: 129813
LÖSUNG 14.09.2016, aktualisiert um 13:51 Uhr
Sure only by adding the additional parameter -HidetableHeaders
01.
Powershell -Executionpolicy ByPass -Command "gci '.\*' -File | sort CreationTime | ft Name,CreationTime -AutoSize -Wrap -HidetableHeaders" >Output.txt
Bitte warten ..
Mitglied: clragon
14.09.2016 um 13:51 Uhr
okey thanks, it works great... ~.~
Bitte warten ..
Mitglied: clragon
14.09.2016, aktualisiert um 14:35 Uhr
Errrm.... I'm getting another problem there. Can you switch me Date and name? bacuse as soon my Name gets max length, the date and time disappears, and if i switch it i can also better set up the get name and get date variable.
Bitte warten ..
Mitglied: 129813
14.09.2016, aktualisiert um 14:40 Uhr
simply swap the order, or better use export-csv for consistency.
Bitte warten ..
Mitglied: clragon
14.09.2016 um 14:45 Uhr
swapping is easy, when i take a closer look, but.. whats export-csv?
Bitte warten ..
Mitglied: bastla
LÖSUNG 14.09.2016 um 21:07 Uhr
Hallo clragon!
Also soweit ich weiss und das ausprobiert habe, gibt der tc switch nicht das eigentliche Erstellungsdatum aus sondern nur das letzte änderungsdatum.
Ein dir /? zeigt ua:
  /T         Bestimmt welche Zeit verwendet wird (nur für NTFS).
  Zeit        C  Erstellung
              A  Letzter Zugriff
              W  Letzter Schreibzugriff
/TC liefert tatsächlich das Erstellungsdatum (für das Änderungsdatum brauchst Du /T nicht, da Default).
Das Ergebnis das ich gerne hätte ist eine TXT mit den Namen aller Dateien des aktuellen Ordners, dem Datum und der Zeit ihrer Erstellung.
Mein (inzwischen sogar getesteter ) Ansatz sähe für das von Dir gewünschte Ergebnis dann so aus:
01.
set "output=D:\output.txt"
02.
:: in den Ordner %folder% wechseln
03.
pushd "%folder%"
04.
:: ev vorhandene Ausgabedatei löschen
05.
del "%output%" 2>nul
06.
:: sortierte Liste erzeugen
07.
for /f "delims=" %%i in ('dir /b /a-d /tc /od') do for /f "tokens=1-2" %%a in ('dir /tc "%%~i"^|findstr "%%~i"') do >>"%output%" echo %%i,%%a,%%b
08.
:: zurück zum ursprünglichen Ordner
09.
popd
Grüße
bastla
Bitte warten ..
Mitglied: clragon
14.09.2016, aktualisiert um 22:05 Uhr
Vielen Dank, genau sowas habe ich gesucht! okey, es erzeugt 2 Fehler, da es auf dem Desktop nach desktop.ini und Thumbs.db sucht, und diese versteckt sind, aber das script ist sehr Batch-Nah, ich muss mich nicht um die Powershell-Überlastungs-Abstürze kümmern, und ich verstehe sogar den Inhalt / kann mit ihm umgehen. Danke für die Mühe
Edit: unfazbar, mein script ist etwa 5 mal so schnell... Powershell scheint wohl doch nicht so gut zu sein.
lg clragon
Bitte warten ..
Mitglied: bastla
14.09.2016 um 23:33 Uhr
Hallo clragon!

Wenn Du Verzeichinsse sowie versteckte / System-Dateien ausschließen willst, kannst Du
dir /a-d-h-s
verwenden ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk
Betriebssystem mit Caching-Mechanismus
gelöst Frage von FrankHolsteWindows Netzwerk6 Kommentare

Hallo, bin heute mit der Formulierung Betriebssystem mit Caching-Mechanismus konfrontiert worden, gegoogelt, nix. Benutzt nicht jedes Betriebssystem von MS ...

Batch & Shell
Datum per batch ändern in Tagen
gelöst Frage von crawnbyBatch & Shell2 Kommentare

Hallo würde gerne per batch eine Änderung des Systemdatums um jeweils 7Tage vornehmen. Man Doppelklickt auf die Batch dann ...

Batch & Shell

(Batch): "Find" Befehl nach aktuellem Datum filtern

gelöst Frage von unauthorized-userBatch & Shell3 Kommentare

Guten Morgen an alle, für die Dokumentation der Server-Updates habe ich eine winzige *.Bat-Datei geschrieben, welche mir alle installierten ...

Batch & Shell

Per Batch ein Datum in einer XML-Datei auf das aktuelle Datum aktualisieren

gelöst Frage von addy0604Batch & Shell4 Kommentare

Hallo Zusammen, ich hab hier ein kleines Problem. Wird für euch wahrscheinlich ein Klacks sein, aber ich verzweifle hier ...

Neue Wissensbeiträge
Windows Server

Active Directory ESE Version Store Changes in Server 2019

Information von Dani vor 2 TagenWindows Server

Moin, Last month at Microsoft Ignite, many exciting new features rolling out in Server 2019 were talked about. But ...

Exchange Server

Microsoft Extending End of Support for Exchange Server 2010

Information von Dani vor 2 TagenExchange Server3 Kommentare

Moin, After investigating and analyzing the deployment state of an extensive number of Exchange customers we have decided to ...

Schulung & Training

Humble Book Bundle: Network and Security Certification 2.0

Tipp von NetzwerkDude vor 3 TagenSchulung & Training

Abend, bei HumbleBundle gibts mal wider ein schönes Paket e-books: sind verschiedene Zertifizierungen wie MCSA, CCNA, CompTIA etc., für ...

Voice over IP

Telekom Umstellung von ISDN Anlagenanschluss auf IP-Telefonie

Erfahrungsbericht von NixVerstehen vor 6 TagenVoice over IP10 Kommentare

Hallo zusammen, nachdem nun vor ein paar Tagen die zwangsweise Umstellung von ISDN auf IP-Telefonie problemlos über die Bühne ...

Heiß diskutierte Inhalte
VB for Applications
Euro-Zeichen in jedem neu erstellten Brief mit Word automatisch entfernen
gelöst Frage von imebroVB for Applications23 Kommentare

Hallo, ich habe ein Problem mit Word, bzw. mit dem €-Zeichen, welches bei Erstellung eines Word-Briefes automatisch eingesetzt wird. ...

Batch & Shell
Regedit eintrad ändern als Admin
Frage von cyberworm83Batch & Shell19 Kommentare

Hallo zusammen, ich bin derzeit als Rollout Techniker unterwegs und muss täglich bei zig Rechnern einen Registry Einträg ändern ...

Visual Studio
Prüfen, ob Programm schon disposed wurde
Frage von MarcoBornVisual Studio17 Kommentare

Hallo Forum, ich habe in VB.NET ein Programm geschrieben, welches Word startet und dort Daten ausliest. Obwohl ich die ...

LAN, WAN, Wireless
Gebäude mit LWL-Anschlüssen ausstatten - VorNachteile?
Frage von staybbLAN, WAN, Wireless17 Kommentare

Hallo zusammen, es gibt ja mittlerweile viele Firmen die nicht nur ihre Backbones mit FibreChannel anbinden sondern auch direkt ...