zeroblue2005
Goto Top

Platzhalter für Datum bzw. Dateiname

Hallo Zusammen,

ich schreibe gerade an einer Batch für eine Dateioperation. Was ist hierbei erst mal egal. Mein Problem ist, dass die Dateinamen folgendem Dateinamen entsprechen:

2019_09_ID_11.pdf
2018_02_ID_12.pdf
2017_01_ID_13.pdf

Nun möchte ich z.B. die Dateien mit 2019_09* berabeiten, mit dem heutige Jahr und Monat:
%DATE:~-4%_%DATE:~-7,2%
egal was jetzt, ob umbennen usw. Hier brauche ich aber noch einen Platzhalten für den Teil des Dateinamens: _ID_11.pdf

Nun habe ich versuchet mit * als Platzhalter zu arbeiten, das geht aber nicht! Wie muss die Syntax aussehen, bei:

*%DATE:~-4%_%DATE:~-7,2%*

Danke

Content-Key: 505299

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

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: falscher-sperrstatus
falscher-sperrstatus 16.10.2019 um 08:26:35 Uhr
Goto Top
Moin,

Du solltest überlegen, ob du langsam auf Powershell wechselst face-smile
Mitglied: 141320
141320 16.10.2019 aktualisiert um 10:18:58 Uhr
Goto Top
Nun habe ich versuchet mit * als Platzhalter zu arbeiten, das geht aber nicht! Wie muss die Syntax aussehen, bei:
Wat willste, geht doch ...? (Zumindest so lange alle Rechner die selben Regionseinstellungen nutzen face-wink, ansonsten über WMIC Datum zuverlässig auslesen)

screenshot

Du solltest überlegen, ob du langsam auf Powershell wechselst
Full ackn.
gci "D:\Ordner\$(get-date -F yyyy_MM)*" -File -Filter *.pdf  
Mitglied: zeroblue2005
zeroblue2005 16.10.2019 um 10:57:50 Uhr
Goto Top
Ja ja ihr habt ja so Recht, dass Problem ist jetzt, dass ich dieses Projekt nicht mal eben so schnell auf Powershell umstellen kann. Viel zu viel arbeit. Ich muss da nur eine Sache ändern, aber dafür muss ich unter Batch wissen wie ich bei: %DATE:~-4%_%DATE:~-7,2% einen Platzhalten am Anfang u. Ende reinbekomme.

Powershel bringt mich hier nicht weiter....
Mitglied: 141320
141320 16.10.2019 aktualisiert um 10:59:32 Uhr
Goto Top
s. Grafik oben. Geht, siehste doch!
Mitglied: zeroblue2005
zeroblue2005 16.10.2019 aktualisiert um 11:21:46 Uhr
Goto Top
Dann verstehe ich das nicht! Was ist dann bei mir falsch? Bei mir kommt bei:

ren "C:\Program Files\RAP\PDF\Monatsstatistik\2019_DATE:~-7,2*.pdf" test.pdf  
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
Mitglied: 141320
Lösung 141320 16.10.2019 aktualisiert um 11:39:18 Uhr
Goto Top
ren "C:\Program Files\RAP\PDF\Monatsstatistik\2019_DATE:~-7,2*.pdf" test.pdf
Och nö ...erstens Prozentzeichen vergessen,außerdem willst du mehrere Dateien in ein und den selben Namen umbenennen! Blödsinn sollte dir eigentllich klar sein!

Kaffee rüberschieb!! Stichwort FOR-Schleife

Für Batch-File
@echo off
for %%a in ("C:\Program Files\RAP\PDF\Monatsstatistik\%DATE:~-4%_%DATE:~-7,2%*.pdf") do ren "%%a" "aktuell_%%~nxa"  
Mitglied: falscher-sperrstatus
falscher-sperrstatus 16.10.2019 um 11:32:11 Uhr
Goto Top
Aus der Syntax heraus würdest du im Zweifel mehrere Dateien in eine umbenennen....
Mitglied: zeroblue2005
zeroblue2005 16.10.2019 um 12:03:54 Uhr
Goto Top
Muss mich bei euch entschuldigen, ich glaube ich bin die Sache falsch angegangen. Da es wohl doch abhängig ist was ich machen will und daraus der Befehl und die Syntax erschließt.

Also, das Problem ist folgendes auf Clientsystem gibt es einen Batch Script der via Taskplaner eine Prozedur auslöst! Diese startet immer am 1 eines neuen Monats um eine gewisse Uhrzeit. Dumm ist es nur, auch wenn der Task den Flag hat ihn nachzuholen, dass wenn der erste ein Feiertag ist, dass das nachholen so schnell bei Start ausgeführt wird, dass das Programm was dazu offen sein muss nicht geöffnet ist. Sprich: Task löst aus nach anmeldung aber App ist noch geschlossen oder User hat sich noch nicht angemedet.

Ergo brauche ich im Script der vom Task ausgelöst wird eine kontrolle. Hier bei wollte ich prüfen, ob eine bestimmte Datei vorhanden ist. Ist Sie vorhanden, dann mache weiter, denn dann ist das Programm auch auf und alles ist gut! Wenn nicht, gehe zu einem Hinweis für benutzer, und versuche es in 60 sekunden noch mal!

Grob gesagt Sieht das so ca. aus:

:nochmal
for %%a in ("C:\Program Files\RAP\PDF\Monatsstatistik\2019_%DATE:~-7,2%*.pdf") do if exist  "%%a" goto ja  

:ja
Prozedur startet.... (Dieser Teil des Scriptes läuft bereits)

:nein
@echo Bitte Programm starten und anmelden
goto nocnmal

exit
!

Nur das scheint wohl oben nicht so zu gehen, wie ich mir das gedacht habe!
Sorry, wollte es mir und euch eigentlich einfach machen, aber wie gesagt, geht wohl leider nicht anders face-smile

Danke
Mitglied: zeroblue2005
zeroblue2005 16.10.2019 um 13:28:11 Uhr
Goto Top
Ich glaube ich habe, es warum ich mir selber das auch immer so kopliziert machen muss.

if exist "C:\Program Files\RAP\PDF\Monatsstatistik\%DATE:~-4%_%DATE:~-7,2%_ID_*.pdf" @ECHO Datei existiert  

danke