regenfrau
Goto Top

Datei Änderungsdatum

Ich habe eine Datei "Kbuch.xlms" in einem Pfad_1 abgespeichert.
Ich möchte mit einer batch-Datei, die nicht unbedingt unter dem Pfad_1 abgespeichert ist das Änderungsdatum mit Änderungszeit auslesen ebenso die Zeit der Dateierstellung mit der
zugehörigen Zeit auslesen.
Die Ausgaben sollen logisch getrennt über echo in eine Datei im Pfad_1 ausgegeben werden.
Die Datei "Kbuch.xlms" könnte eine beliebige andere Datei sein.
Der Pfad "Pfad_1" sollte über eine Variable gehandelt werden.
Die Batch-Datei sollte Pausen mit Tastendruck enthalten.
Ich habe einige Vorschläge gelesen, habe aber Probleme mit dem Pfadhandling und
Ausgabe als file.
Vielleicht kann mir jemand bei der Lösung des Problems helfen.
Mfg Regenfrau

Content-ID: 43421089072

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

Ausgedruckt am: 21.11.2024 um 17:11 Uhr

Pjordorf
Pjordorf 02.08.2024 aktualisiert um 23:19:45 Uhr
Goto Top
Penny.Cilin
Penny.Cilin 03.08.2024 um 08:07:13 Uhr
Goto Top
Zeit für eine Begrüßung sollte schon sein:

Netiquette
rubberman
Lösung rubberman 03.08.2024 um 12:17:43 Uhr
Goto Top
Moin.

Etwa so.
@echo off &setlocal

set "filePath=X:\wo\auch\immer"  
set "inFile=Kbuch.xlms"  
set "outFile=dates.csv"  

for /f "delims=." %%i in (  
  'wmic PATH CIM_DataFile WHERE "Name='%filePath:\=\\%\\%inFile%'" GET CreationDate^,LastModified /value'  
) do for /f %%j in ("%%i") do set "%%j"  

:: csv ist für mich "logisch getrennt", keine Ahnung ob dir was anderes vorschwebt... 
>"%filePath%\%outFile%" (  
  echo type;year;month;day;hour;minute;second
  echo CreationDate;%CreationDate:~0,4%;%CreationDate:~4,2%;%CreationDate:~6,2%;%CreationDate:~8,2%;%CreationDate:~10,2%;%CreationDate:~12,2%
  echo LastModified;%LastModified:~0,4%;%LastModified:~4,2%;%LastModified:~6,2%;%LastModified:~8,2%;%LastModified:~10,2%;%LastModified:~12,2%
)

pause

Gruß
Steffen
Regenfrau
Regenfrau 04.08.2024 um 16:03:05 Uhr
Goto Top
Es tut mir leid, eigentlich wollte ich das tun. Hab es einfach vergessen.
Liebe Grüße Regenfrau
Regenfrau
Regenfrau 04.08.2024 um 16:17:58 Uhr
Goto Top
Hallo rubberman,
Das ging doch sehr schnell, vielen Dank. Es sieht so aus, als wären wir kurz vor einer Lösung.

Eine Datei "dates.csv" im Zielordner wurde mit folgendem Inhalt ausgegeben:

type;year;month;day;hour;minute;second
CreationDate;~0,4CreationDate:~4,2CreationDate:~6,2CreationDate:~8,2CreationDate:~10,2CreationDate:~12,2
LastModified;~0,4LastModified:~4,2LastModified:~6,2LastModified:~8,2LastModified:~10,2LastModified:~12,2

vorher kam allerdings noch folgende Meldung:
"keine Instanzen verfügbar."

Die Syntax des Pfads und der Dateinamen scheint korrekt zu sein, da ich jedesmal eine
Pause eingefügt habe und keine Fehlermeldung bekam.
Regenfrau
Regenfrau 04.08.2024 um 16:20:45 Uhr
Goto Top
Liebe Grüße Regenfrau (hab ich oben vergessen!)
rubberman
rubberman 04.08.2024 um 16:40:18 Uhr
Goto Top
Moin.

Die Syntax des Pfads und der Dateinamen scheint korrekt zu sein
Unwahrscheinlich.

da ich jedesmal eine Pause eingefügt habe und keine Fehlermeldung bekam.
Doch hast du:
"keine Instanzen verfügbar."

Grüße
Steffen
Regenfrau
Regenfrau 04.08.2024 um 16:43:51 Uhr
Goto Top
Hallo Pjordorf

Danke für Deine schnellen Bemühungen. Ich hab mir die Links für ein späteres Studium zur Seite gelegt. Im Augenblick ist mir das fast zuviel, da ich das alles auch erst verstehen muss.
Ich bin leider nicht häufig mit batch-Dateien und cmd-Befehlen beschäftigt. Wenn man das
nicht täglich macht, vergisst man das wieder. Ich suche zunächst nur eine Lösung für mein spezielles Problem.
Jedenfalls vielen Dank und liebe Grüße Regenfrau.
Regenfrau
Regenfrau 04.08.2024 um 16:55:05 Uhr
Goto Top
Hallo Steffen,

Die Fehlermeldung "keine Instanzen verfügbar." bekam ich erst ganz am Schluss

@echo off &setlocal

set "filePath=X:\wo\auch\immer"
pause (keine Fehlermeldung)
set "inFile=Kbuch.xlms"
pause (keine Fehlermeldung)
set "outFile=dates.csv"
pause (keine Fehlermeldung)

for /f "delims=." %%i in (
'wmic PATH CIM_DataFile WHERE "Name='%filePath:\=\\%\\%inFile%'" GET CreationDate^,LastModified /value'
) do for /f %%j in ("%%i") do set "%%j"

:: csv ist für mich "logisch getrennt", keine Ahnung ob dir was anderes vorschwebt...
"%filePath%\%outFile%" (
echo type;year;month;day;hour;minute;second
echo CreationDate;%CreationDate:~0,4%;%CreationDate:~4,2%;%CreationDate:~6,2%;%CreationDate:~8,2%;%CreationDate:~10,2%;%CreationDate:~12,2%
echo LastModified;%LastModified:~0,4%;%LastModified:~4,2%;%LastModified:~6,2%;%LastModified:~8,2%;%LastModified:~10,2%;%LastModified:~12,2%
)

pause (erst hier kommt die Fehlermeldung)


Die Ausgabedatei dates.csv erfolgt ja auch im gewünschten Verzeichnis, was gegen einen
Syntaxfehler bei der Pfadangabe spricht.

Liebe Grüße Regenfrau
rubberman
rubberman 04.08.2024 um 17:14:20 Uhr
Goto Top
Liebe Regenfrau.

set "filePath=X:\wo\auch\immer"
Wenn du den Pfad nicht angepasst hast, dann kann das nicht funktionieren. Falls du ihn angepasst hast, dann liegt der Fehler sicherlich trotzdem da. Wenn du aber nicht schreibst, wie du ihn angepasst hast, kann ich kaum wissen wo der Fehler liegt. Oder wärst du dazu in der Lage, wenn du dich mal in die Lage der Leser deines Threads versetzt?

Glaskugelmodus:
  • Du hast deinen Pfad mit / statt \ getrennt.
  • Du hast einen \ an das Ende deines Pfades gesetzt.

Grüße
Steffen
Regenfrau
Regenfrau 04.08.2024 um 18:03:06 Uhr
Goto Top
Hallo Steffen,

Also, ich schreibe meine Endversion nach dem -----------------

@echo off &setlocal

set "filePath=D:\Hausbuero_neues\Aktuell_neues\Sicherung"
pause
set "inFile=Kontenbuch_Anwalt.xlms"
pause
set "outFile=dates.csv"
pause

for /f "delims=." %%i in (
'wmic PATH CIM_DataFile WHERE "Name='%filePath:\=\\%\\%inFile%'" GET CreationDate^,LastModified /value'
) do for /f %%j in ("%%i") do set "%%j"

:: csv ist für mich "logisch getrennt", keine Ahnung ob dir was anderes vorschwebt...
"%filePath%\%outFile%" (
echo type;year;month;day;hour;minute;second
echo CreationDate;%CreationDate:~0,4%;%CreationDate:~4,2%;%CreationDate:~6,2%;%CreationDate:~8,2%;%CreationDate:~10,2%;%CreationDate:~12,2%
echo LastModified;%LastModified:~0,4%;%LastModified:~4,2%;%LastModified:~6,2%;%LastModified:~8,2%;%LastModified:~10,2%;%LastModified:~12,2%
)

pause


liebe Grüße Regenfrau
rubberman
rubberman 04.08.2024 um 18:25:12 Uhr
Goto Top
Problemlos nachgestellt:
@echo off &setlocal

set "filePath=D:\Hausbuero_neues\Aktuell_neues\Sicherung"  
pause
set "inFile=Kontenbuch_Anwalt.xlms"  
pause
set "outFile=dates.csv"  
pause

for /f "delims=." %%i in (  
'wmic PATH CIM_DataFile WHERE "Name='%filePath:\=\\%\\%inFile%'" GET CreationDate^,LastModified /value'  
) do for /f %%j in ("%%i") do set "%%j"  

:: csv ist für mich "logisch getrennt", keine Ahnung ob dir was anderes vorschwebt... 
>"%filePath%\%outFile%" (  
echo type;year;month;day;hour;minute;second
echo CreationDate;%CreationDate:~0,4%;%CreationDate:~4,2%;%CreationDate:~6,2%;%CreationDate:~8,2%;%CreationDate:~10,2%;%CreationDate:~12,2%
echo LastModified;%LastModified:~0,4%;%LastModified:~4,2%;%LastModified:~6,2%;%LastModified:~8,2%;%LastModified:~10,2%;%LastModified:~12,2%
)

pause
Ergebnis:
screenshot 2024-08-04 182102

¯\_(ツ)_/¯
Gruß
Steffen
Regenfrau
Regenfrau 04.08.2024 um 18:46:27 Uhr
Goto Top
Hallo Steffen
Was heißt "Problemlos nachgestellt:" genau?
Ich habe den Text von oben nochmal mit Kopieren in meine Batch-Datei übernommen und gestartet.
Ich bekomme immer noch die Meldung: "keine Instanzen verfügbar."
und das file dates.csv hat immer noch folgenden Inhalt:

type;year;month;day;hour;minute;second
CreationDate;~0,4CreationDate:~4,2CreationDate:~6,2CreationDate:~8,2CreationDate:~10,2CreationDate:~12,2
LastModified;~0,4LastModified:~4,2LastModified:~6,2LastModified:~8,2LastModified:~10,2LastModified:~12,2

Vielleicht liegt es an meiner Windows Version. Ich habe Win 11 Pro
Woran könnte es sonst noch liegen?
liebe Grüße Regenfrau
rubberman
rubberman 04.08.2024 um 19:44:12 Uhr
Goto Top
Problemlos nachgestellt bedeutet, exakt deinen Code mit exakt deiner Verzeichnis- und Dateistruktur ohne Probleme ausgeführt. Der Screenshot zeigt das.
Windows 11 Home, aktuell (Version 10.0.22631.3958).
Woran könnte es sonst noch liegen?
Keine Ahnung. "Hausbuero..." enthält real kein "ü"?

Gruß
Steffen
Regenfrau
Regenfrau 04.08.2024 um 20:07:03 Uhr
Goto Top
Hallo Steffen,

Hausbuero hab ich ohne "ü".
Ich danke dir für deine bisherigen Bemühungen. Vielleicht gibt es noch eine Lösung. Deine Hilfe war für mich überraschend schnell und sehr verständlich. Ich lass das Thema noch offen, vielleicht gibt es noch weitere User, die eine Idee haben.
Liebe Grüße und alles Gute Regenfrau
13910172396
Lösung 13910172396 04.08.2024 aktualisiert um 22:56:48 Uhr
Goto Top
Moin.
Nimm einfach die PowerShell da ist das auch ein lächerlicher Einzeiler und auch lesbar... Wer eiert denn heutzutage für sowas noch mit Batch rum ?!
Get-Item -LiteralPath "D:\Hausbuero_neues\Aktuell_neues\Sicherung\Kontenbuch_Anwalt.xlsm" | select LastWriteTime,CreationTime | export-csv -LiteralPath "D:\Hausbuero_neues\Aktuell_neues\Sicherung\dates.csv" -Delimiter ";" -NoType  
In ner Batch verwurstet geht natürlich auch ..
@echo off
set "filepath=D:\Hausbuero_neues\Aktuell_neues\Sicherung"  
set "infile=Kontenbuch_Anwalt.xlsm"  
set "outfile=dates.csv"  
powershell -EP Bypass -C "Get-Item -LiteralPath '%filepath%\%infile%' | select LastWriteTime,CreationTime | export-csv -LiteralPath '%filepath%\%outfile%' -Delimiter ';' -NoType"  
Gruß Strods
Regenfrau
Regenfrau 06.08.2024 um 20:50:49 Uhr
Goto Top
Hallo Strods, vielen Dank für die Lösungsvarianten, ich hatte gestern keinen Nerv mehr zu antworten.
Ich bin inzwischen richtig verzweifelt, weil nichts klappt.
Ich habe den ersten Text in ein textfile kopiert und mit der Endung ps1 versehen.
Nach dem Markieren habe ich "mit Powershell ausführen" geklickt.
Den Ablauf konnte ich am Bildschirm nicht verfolgen. (gibt es eine Möglichkeit zum Monitoring ?)
Nach dem Durchlauf habe ich keine Datei "dates.cvs" gefunden.

Als nächstes habe ich die Batchversion mit zwei zusätzlichen Pausen laufen lassen.
Dabei habe ich folgende Fehlermeldung gefunden.
pfadprobleme
Leider verstehe ich die Details nicht.
Allerdings habe ich dann eine leere Datei "dates.cvs" im gewünschten Verzeichnis gefunden. Ich hoffe nun, das das Problem irgendwann gelöst werden kann.
Mit freundlichen Grüßen und vielen Dank Regenfrau
13910172396
Lösung 13910172396 06.08.2024 aktualisiert um 21:12:04 Uhr
Goto Top
Wohl ein Tippfehler deinerseits bei der Dateiendung 🫣, brauchsch a neis Nasefahrrad 🥸?
...

*.xlms statt richtig *.xlsm

Ich habe den ersten Text in ein textfile kopiert und mit der Endung ps1 versehen.
Nach dem Markieren habe ich "mit Powershell ausführen" geklickt.
Executionpolicy anpassen , oder alternative direkt ausführen mittels ...
powershell -EP Bypass -File "D:\script.ps1"  
RTFM
Executionpolicy
Regenfrau
Regenfrau 06.08.2024 um 21:26:49 Uhr
Goto Top
Hallo Strods,
Hurra, hurra es ist geschaft. Dank deiner Fehlerlese.
Zumindest die Batchdatei liefert jetzt die gewünschte Ausgabe.
Warum das mit der Powershell noch nicht klappt, weiß ich nicht.
Ich bin richtig happy !
Wenn Du noch eine Lösung für die Powershell findest, würde es mich interessieren.
Aber mit der Batchdatei-Lösung bin ich voll zufrieden
Danke, danke liebe Grüße Regenfrau
13910172396
13910172396 06.08.2024 aktualisiert um 21:39:10 Uhr
Goto Top
Zitat von @Regenfrau:

Wenn Du noch eine Lösung für die Powershell findest, würde es mich interessieren.
Da braucht's keine Lösung, funktioniert out of the box mit meinen Hinweisen oben 😉.
Nun denn 🖖