Batchbefehl für Filterung des aktuellen Datums plus Dateiendungsumbenennung?

probiere es mal damit
Code:
forfiles /p "path\to\folder" /s /d +0 /c "cmd /c ren @file @f.csv"
wenn ich dich richtig verstanden habe, beziehst du dich auf das Erstell / Änderungsdatum (/d +0). Oder ist das Datum bestandteil des Dateinamens?
 
Ja, richtig. Ich möchte in einem Ordner schauen, wo sich z.b. 5 Dateien liegen und zwei davon sind von heute. Und ich möchte nur bei diesen Zwei Dateien die Dateiänderung ändern lassen.
 
Sind die Dateien alle in einem Ordner oder gibt es auch Unterordner?
Das heißt wenn es Dateien vom Vortag mit der Endung asc gibt, sollen diese Ignoriert werden?
Und Heute ist heute oder 24 std. alt?
 
geht es da immer nur um einen Ordner oder soll das über mehrere Ordner laufen?

Sowas geht ganz easy mit dem MUT (Mehrfach-Umbenenn-Tool) als Bestandteil des Total Commanders (der noch mehr kann).
 
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.asc @f.csv"

So habe ich es jetzt getestet. Noch tut sich nichts, leider. Wo ist mein Fehler?
Ergänzung ()

Es geht nur um einen Ordner, wo täglich neue Dateien reinkommen. Und heute ist heute. Also 20.01 ist der 20.01
 
hab auch grad gemerkt, dass er @f nicht korrekt nimmt. schreibst du stattdessen @file.csv" bekommst du eine Datei à la "foo.asc.csv". sie behält die ursprüngliche Endung als Teil des Namens bei, bekommt einfach ne neue Endung

quick and dirty workaround :)

mit PowerShell geht es so
PowerShell:
$folder = "path\to\folder"
$today = (Get-Date).Date
$files = Get-ChildItem -Path $folder -Recurse | Where-Object { !$_.PSIsContainer -and $_.CreationTime.Date -eq $today }
foreach ($file in $files) {
    $newName = $file.FullName -replace [regex]::Escape($file.Extension), '.csv'
    Rename-Item -Path $file.FullName -NewName $newName
}
 
  • Gefällt mir
Reaktionen: prian, Tornhoof und Mystery1988
Das geht echt easy mit dem Total Commander.

Beispiel:
C:\temp mit Datum absteigend sortiert, die relevanten markiert (geht auch über Datumssuche und Auswahl der Trefferliste).
1674198192626.png

MUT aufrufen.
1674198314845.png


Tadaaaaaaaaaa....
1674198430547.png
 
  • Gefällt mir
Reaktionen: spcqike und GaborDenes
1674198375798.png


Das sind die zwei Beispieldateien. Ich habe versucht:
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.asc @file.csv"
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.csv @file.asc"

beide Versionen gehen leider nicht. Es bleibt immer eine CSV.

Ich möchte nämlich für einen Kunden von uns eine leichte Datei schreiben, wo er bestenfalls nur per Doppelklick draufdrückt und es tut das was es soll.

Mit Powershell habe ich bisher keinerlei Berührungspunkte.
 
@prian es geht auch prima mit PowerRename (von den PowerToys)

sowas lässt sich leider nicht per Skript automatisieren. Ich gehe doch davon aus, dass, wenn es um Daten von "heute" geht, sowas öfter vorkommt :)

mp3exe schrieb:
Das sind die zwei Beispieldateien. Ich habe versucht:
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.asc @file.csv"
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.csv @file.asc"

beide Versionen gehen leider nicht. Es bleibt immer eine CSV.
Dann habe ich dich missverstanden. ich dachte, du möchtest eine .csv bekommen.

das erste @file.asc ist falsch, da @file bereits die ganze datei, inkl. Endung ist. Da gehört nur ein @file hin. das zweite @file.csv ist der Output. er benennt die Datei foo.bar (@file) zu foo.bar.csv (@file.csv). quick and dirty.

mp3exe schrieb:
Mit Powershell habe ich bisher keinerlei Berührungspunkte.
dann solltest du das mal nachholen bzw, dir auch angucken. damit lässt sich bedeutend mehr und feiner machen, als per batch.
 

Anhänge

  • 1674198571157.png
    1674198571157.png
    48,7 KB · Aufrufe: 101
  • 1674198578294.png
    1674198578294.png
    48,7 KB · Aufrufe: 98
mp3exe schrieb:
Anhang anzeigen 1314207

Das sind die zwei Beispieldateien. Ich habe versucht:
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.asc @file.csv"
forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file.csv @file.asc"

beide Versionen gehen leider nicht. Es bleibt immer eine CSV.

Ich möchte nämlich für einen Kunden von uns eine leichte Datei schreiben, wo er bestenfalls nur per Doppelklick draufdrückt und es tut das was es soll.

Mit Powershell habe ich bisher keinerlei Berührungspunkte.
Bestelfalls natürlich mit Wildcard als Dateinamen. Da der Kunde immer andere Namen für seine Programme verwendet. *. anstatt fil. habe ich auch schon versucht ohne Erfolg.
Ergänzung ()

spcqike schrieb:
@prian es geht auch prima mit PowerRename (von den PowerToys)

sowas lässt sich leider nicht per Skript automatisieren. Ich gehe doch davon aus, dass, wenn es um Daten von "heute" geht, sowas öfter vorkommt :)


Dann habe ich dich missverstanden. ich dachte, du möchtest eine .csv bekommen.

das erste @file.asc ist falsch, da @file bereits die ganze datei, inkl. Endung ist. Da gehört nur ein @file hin. das zweite @file.csv ist der Output. er benennt die Datei foo.bar (@file) zu foo.bar.csv (@file.csv). quick and dirty.


dann solltest du das mal nachholen bzw, dir auch angucken. damit lässt sich bedeutend mehr und feiner machen, als per batch.

Also so?

forfiles /p "C:\TEST\" /s /d +0 /c "cmd /c ren @file @file.asc" (Ich nutzte den Code genau so , wie er da steht da ich auf C ein Test Ordner angelegt habe)

Habe es versucht und es geht immernoch nicht.

Wegen Powershell, ja müsste ich mal.
 
Zuletzt bearbeitet:
mach mal am ende deiner Batch-File ein "pause", damit das Fenster offen stehen bleibt. gibt es dort eventuell ne Fehlermeldung?

wie gesagt, als Batch läuft es so bei mir durch, erzeugt aber Datein mit "doppelter Endung". Führt man das Skript am gleichen Tag mehrmals aus, verlängern sich die Dateinamen halt...

Code:
forfiles /p "path\to\folder" /s /d +0 /c "cmd /c ren @file @file.asc"
pause

nachtrag: ich glaub dein Pfad ist nicht korrekt. das letzte "\" ist zu viel. füge ich das bei mir hinzu gibt er mir auch Fehler.
 
Zuletzt bearbeitet: (Tippfehler)
Bitte nutze Powershell. Da geht es wirklich einfacher. Du kannst bei Get-ChildItem sogar Filter bei Dateiendungen setzen.
 
Wenn es nach mir geht gerne, aber ich kann ja dem Kunden nicht sagen er muss es nutzen. Der Chef ist da recht strickt, es war schon überedungsarbeit ihm zu überreden für die Batch Datei.
 
Das gesehen?
spcqike schrieb:
nachtrag: ich glaub dein Pfad ist nicht korrekt. das letzte "\" ist zu viel. füge ich das bei mir hinzu gibt er mir auch Fehler.
Ergänzung ()

spcqike schrieb:
wie gesagt, als Batch läuft es so bei mir durch, erzeugt aber Datein mit "doppelter Endung". Führt man das Skript am gleichen Tag mehrmals aus, verlängern sich die Dateinamen halt...
Läßt sich vermeiden mit:
Code:
forfiles /p "c:\test" /s /d +0 /c "cmd /c ren @file @fname.asc"
 
  • Gefällt mir
Reaktionen: spcqike
Jetzt geht alles:

forfiles /p "C:\TEST" /s /d +0 /c "cmd /c ren @file @file.asc"

Könnte man evtl. noch sagen nur das aktuellste von heute, anstatt alle von heute?

Da der Kunde Labels ausdruckt und nach jedem Label auf die Datei draufdrücken wird.
Und wenn er eine um 9 Uhr und die nächste um 9:05 Uhr macht, soll er nur die um 9:05 Uhr nehmen.
 
mp3exe schrieb:
Nutze besser @fname.asc. So wird nur der Name (ohne Endung) genutzt ;). Sonst wird das unübersichtlich.

Code:
forfiles /p "c:\test" /s /d +0 /c "cmd /c ren @file @fname.asc"
 
  • Gefällt mir
Reaktionen: spcqike
hm, klar. fname ....

wenn man sich die Doku dazu anguckt wirds auch klar :D
https://learn.microsoft.com/de-de/windows-server/administration/windows-commands/forfiles#syntax

@mp3exe du könntest, mit powershell, sagen "der letzten Stunde", aber woher soll der Rechner wissen was "das aktuellste" ist? oder meinst du tatsächlich nur die aller letzte?

wie auch immer, wenn du das vorgeschlagene "@fname.asc" als Output nimmst, wäre es egal. da könnte er auch den gesamten Ordner umbenennen, die alten .asc Dateien wären am ende wieder .asc.

forfiles bietet auch einen Filter (/M)

Code:
forfiles /p "pfad" /M "*.csv" ....
fässt niur csv Dateien an.
 
  • Gefällt mir
Reaktionen: mae1cum77
Okay, verstehe.

Ich denke jetzt habe ich aber die Bausteine die ich benötige.
Ich versuche es mal Produktiv am Kunden ob es geht.
Danke schonmal.
 

Anhänge

  • 1674206072018.png
    1674206072018.png
    10,4 KB · Aufrufe: 99
  • 1674206105502.png
    1674206105502.png
    8 KB · Aufrufe: 99
  • Gefällt mir
Reaktionen: spcqike und mae1cum77
Zurück
Oben