Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Batchbefehl für Filterung des aktuellen Datums plus Dateiendungsumbenennung?
- Ersteller mp3exe
- Erstellt am
probiere es mal damit
wenn ich dich richtig verstanden habe, beziehst du dich auf das Erstell / Änderungsdatum (/d +0). Oder ist das Datum bestandteil des Dateinamens?
Code:
forfiles /p "path\to\folder" /s /d +0 /c "cmd /c ren @file @f.csv"
Mystery1988
Ensign
- Registriert
- März 2015
- Beiträge
- 222
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?
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?
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?
Es geht nur um einen Ordner, wo täglich neue Dateien reinkommen. Und heute ist heute. Also 20.01 ist der 20.01
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
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
}
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
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.
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.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.
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.mp3exe schrieb:Mit Powershell habe ich bisher keinerlei Berührungspunkte.
Anhänge
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.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.
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...
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.
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)
Mystery1988
Ensign
- Registriert
- März 2015
- Beiträge
- 222
Bitte nutze Powershell. Da geht es wirklich einfacher. Du kannst bei Get-ChildItem sogar Filter bei Dateiendungen setzen.
S
s1ave77
Gast
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 ()
Läßt sich vermeiden mit: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...
Code:
forfiles /p "c:\test" /s /d +0 /c "cmd /c ren @file @fname.asc"
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.
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.
S
s1ave77
Gast
Nutze besser @fname.asc. So wird nur der Name (ohne Endung) genutzt . Sonst wird das unübersichtlich.mp3exe schrieb:@file.asc
Code:
forfiles /p "c:\test" /s /d +0 /c "cmd /c ren @file @fname.asc"
hm, klar. fname ....
wenn man sich die Doku dazu anguckt wirds auch klar
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)
fässt niur csv Dateien an.
wenn man sich die Doku dazu anguckt wirds auch klar
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" ....
Ähnliche Themen
K
- Antworten
- 8
- Aufrufe
- 9.940
K
- Antworten
- 8
- Aufrufe
- 5.339