tranministrator
Goto Top

For Schleife für CSV Export (Dateiname + Erstellungsdatum) für 14.000 Files

Hallo liebe Community,

eine neue Herausforderung liegt wieder auf meinem Tisch.
Bei 14.000 Bildern soll das Erstelldatum, der Filename ausgelsen und in ein CSV übergeben werden. Das Ergebnis sieht man weiter unten.
Eine mögliche Lösung habe ich, zumindest glaubte ich das. Denn sie ist zu langsam 10 Bilder in einer Minute ist definitiv zu langsam.

Mit dem Befehl dir /b (nur für die FIlenames) ging das relativ flott. Aber die SChleife haut jetzt echt rein.

Was könnte ich eurer Meinung nach an dieser Abfrage anpassen?

@ECHO OFF &SETLOCAL
D:
cd \scripts\Bildimport\OUTPUT_V2\
del filenames.csv

net use X: /delete /Y
net use X: \\NAS-Q700\Public\Produktbilder\650px_jpg
if errorlevel 1 (goto :Fehler) else (goto :weiter)

:Fehler
cls
powershell "D:\scripts\Bildimport\Mail\Alert.ps1"  
goto ende

:weiter
cls
X:
ping 127.0.0.1
cd /d "X:"  
for /f "tokens=2delims=:" %%a in ('chcp') do set /a mychcp=%%a 2>nul  
chcp 1252 >nul
(for /f "delims=" %%a in ('dir /b /a-d') do call:process "%%~fa")>"D:\scripts\Bildimport\OUTPUT_V2\filenames.csv"  
chcp %mychcp% >nul
type filenames.csv
goto:eof

:process
setlocal
set "fname=%~1"  
for /f "tokens=2delims=," %%b in ('wmic path cim_datafile where name^="%fname:\=\\%" get creationdate /format:csv^|find "."') do set "crd=%%b"  
echo(%~nx1;%crd:~6,2%.%crd:~4,2%.%crd:~0,4% %crd:~8,2%:%crd:~10,2%:%crd:~12,2%
exit /b
REM ,%crd:~15,4%
ping 127.0.0.1
Pause
REM call "D:\Scripts\Bildimport\BATCH\startsqlimport_V2.bat"  

:ende
Exit


Ergebnis:

47336106_DSC_9104.jpg;03.10.2018 16:02:49


LG

Rob

Content-ID: 393934

Url: https://administrator.de/contentid/393934

Ausgedruckt am: 26.11.2024 um 09:11 Uhr

137846
137846 26.11.2018 aktualisiert um 16:33:38 Uhr
Goto Top
Mit der PS ein schneller Einzeiler
gci 'c:\ordner' -filter *.jpg -file | %{[pscustomobject]@{Name=$_.Name;Erstelldatum=$_.CreationTime.toString('G')}} | export-csv filenames.csv -delimiter ";" -NoType -Encoding UTF8  
Gruß A.
erikro
erikro 26.11.2018 aktualisiert um 16:03:28 Uhr
Goto Top
Moin,

warum einfach, wenn es auch kompliziert sein kann. face-wink

PS P:\test> Get-ChildItem *.jpg -recurse | select-object fullname,creationtime | export-csv x:\path\test.csv -delimiter ";" -encoding utf8  

hth

Erik
erikro
erikro 26.11.2018 um 16:05:31 Uhr
Goto Top
Zitat von @137846:

Mit der PS ein schneller Einzeiler
> gci 'c:\ordner' -filter *.jpg -file | %{[pscustomobject]@{Name=$_.Name;Erstelldatum=$_.Creationdate.toString('G')}} | export-csv filenames.csv -delimiter ";" -NoType -Encoding UTF8  
> 

Da warst Du schneller. face-wink Die Felder umzubenennen ist natürlich keine schlechte Idee.
137846
137846 26.11.2018 aktualisiert um 16:33:54 Uhr
Goto Top
Alternativ geht's mit Spaltenumbenennung natürlich auch so
gci 'c:\ordner' -filter *.jpg -file |   
select @{n='Name';e={$_.Name}},@{n='Erstelldatum';e={$_.CreationTime.toString('G')}} | export-csv filenames.csv -delimiter ";" -NoType -Encoding UTF8  
Tut sich aber nicht viel dran.

Jetzt kann er sich selbst austurnen bis zum Abwinken.