Hallo, ich möchte mittels batch folgende Datei kürzen und auch speichern. Die Datei liegt auf D:\temp 113_Zinsen_von_gestern-heute.2001-2010.csv Ich habe die´s hier versucht und komme nicht weiter. Brauche den teil 2001-2010.csv set lesen=113_Zinsen_von_gestern-heute.2001-2010.csv for /F "tokens=1 delims=." %%i in ("%lesen%") do set frei=%%i for /F "tokens=2 delims=." %%j in ("%lesen%") do set brauche=%%j und bekomme dann set brauche=2001-2010 1. Was mache ich nun mit der Variable 2001-2010? Umleiten wie? 2. Warum ist das .csv hinten weg? 3. Wie kann ich alle Dateien in D:\temp auf einmal abarbeiten? Habe ich mich verständlich ausgedrückt als nicht batch versteher. Ich wäre dankbar für eure Hilfe. MfG Bettler
Bettler schrieb: > ich möchte mittels batch folgende Datei kürzen und auch speichern. Du willst nicht die Datei kürzen. Du willst ihren Namen verändern. Probier mal das hier aus:
1 | set lesen=113_Zinsen_von_gestern-heute.2001-2010.csv |
2 | |
3 | for /F "tokens=1 delims=." %%i in ("%lesen%") do set eins=%%i |
4 | for /F "tokens=2 delims=." %%i in ("%lesen%") do set zwei=%%i |
5 | for /F "tokens=3 delims=." %%i in ("%lesen%") do set drei=%%i |
6 | |
7 | |
8 | echo %eins% |
9 | echo %zwei% |
10 | echo %drei% |
11 | |
12 | set dateiname=%zwei%.%drei% |
13 | |
14 | echo %dateiname% |
einfach nur g*** schön. Habt mir beide super geholfen. Habe den Code von @rufus und noch dran den Code von @Klaus genommen und ich bin sowas von zufrieden. (erstmal) Bei diesem Beispiel habe ich ja die Variable "lesen" vorgegeben. Was ist aber wenn ich nen ganze Menge solcher Daten habe (D:\temp\} die immer auf .2001-2010.csv änden? Ich habe irgendwo was gelesen von ("dir /p") oder so. Aber was mache ich damit in meiner batch? Es soll ja auch möglich sein die Zeichen von links oder rechts zu zählen. Vielleicht gibt es noch einmal einen Rat von euch. Danke Bettler
Nun, das Beispiel von mir zerlegt den Dateinamen in drei Teile - Du kannst den ersten Teil ("eins" oder bei Dir "frei") mit einem vorgegebenen String vergleichen. Bei aufwendigeren Stringoperationen erscheint mir die Verwendung einer leistungsfähigeren Skriptsprache angesagt; Windows versteht auch VBScript.
Bettler schrieb: > Was ist aber wenn ich nen ganze Menge solcher Daten habe (D:\temp\} die > immer auf .2001-2010.csv änden? Dann kann man um das Ganze noch eine for-Schleife bauen, die alle Dateien abgrast. Darin wird je Durchlauf eine Datei angefasst. Es macht natürlich keinen Sinn, die alle auf denselben Namen .2001-2010.csv zu ändern; sonst gehen ja alle bis auf die letzte verloren. Keine Ahnung, wie du sie dann benamsen willst. Wenn der erste Teil des Originalnamens (im Beispiel die 113) eindeutig ist, kannst du den ja analog zu den anderen Token extrahieren und dafür verwenden.
Hallo zusammen, es sollen folgende Dateien die unter D:\temp\ liegen so verändert werden das alles was rechts vom ersten Punkt steht der neue Dateiname sein soll. 113_Zinsen_von_gestern-heute.2001-2010.csv > 2001-2010.csv 119_Zinsen_seit_gestern-heute.2051-2017.csv > 2051-2017.csv 112_Irgendwas_von_gestern-morgen.1071-7010.csv > 1071-7010.csv usw...... In einer for Schleife ist denke ich das richtige. Habe nun schon einige Zeit im Inet gesucht aber kann mir auf das ganze Zeug keinen rechten Reim machen. MfG Bettler
Bettler schrieb: > es sollen folgende Dateien die unter D:\temp\ liegen so verändert werden > das alles was rechts vom ersten Punkt steht der neue Dateiname sein > soll. Wenn sichergestellt ist, daß das, was rechts des ersten Punktes steht, eineindeutig ist, dann funktioniert dein bisheriger Code. Wenn aber Namen wie 113_Zinsen_von_gestern-heute.2001-2010.csv 219_Zinsen_seit_gestern-heute.2001-2010.csv auftreten, dann geht das ganze nicht. Wie sollen dann die Dateien umbenannt werden?
Mm, ok habe mich noch einmal mit jemanden unterhalten der mir diese Aufgabe aufgegeben hat. Nun anders.Von dieser 113_Zinsen_von_gestern-heute.2001-2010.csv soll bleiben 113_Zinsen_von_gestern.csv Habe ich nun gemacht mit for %f in (_.csv) do for /F "delims=-" %e in ('echo %~f') d o @echo move /y "%~f" "%e%~xf" So 100% sicher was es alles macht bin ich mir nicht aber es macht das was es soll. (Ich muß zugeben ich habe das ganze in div. Foren gefunden.) Nun noch, wie kopiere ich das in ein anderes Verzeichnis? Move gegen copy ersetzen klappt nicht. MfG Bettler
So, dies ist nun mein Ergebnis um von 113_Zinsen_von_gestern-heute.2001-2010.csv nach 113_Zinsen_von_gestern.csv zu gelangen for %%f in ("D:\temp\batch_test\*_*.csv") do for /F "delims=-" %%e in ('echo %%~f') do move /y "%%~f" "%%e%%~xf" copy /y *csv d:\temp\batch_test\eins Falls es noch Bemerkungen dazu geben sollte, dann lese ich sie mir gerne durch. MfG Bettler
Wobei move meines Wissens kein Standardkommando unter Windows ist, kann aber auch sein daß ich mich täusche (ist nicht so mein Metier, und habe jetzt auch keine Lust Windows zu starten). Falls es so ist: ren (für rename) geht dann und ist auf jedem Windows vorhanden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.