WinFuture-Forum.de: Datei per Batch kopieren und umbenennen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Datei per Batch kopieren und umbenennen


#1 Mitglied ist offline   Boost12 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. November 17
  • Reputation: 0

geschrieben 27. November 2017 - 20:37

Einen schönen Abend!

Ich hoffe ihr könnt mir weiter helfen.

Ich habe mir eine Batch erstellt aber diese funktioniert nicht richtig.

Habe auch schon einige Foren durchstöbert jedoch leider ohne den passenden Erfolg.

Ich habe eine Excel-Datei mit einem Datum als Dateinamen z.B. 01.01.2018 jetzt möchte ich per Batch die Datei kopieren.
Am besten für einen ganzen Monat oder sogar für ein Jahr.
Das ich den Wert 01.01.2018 nehme und ein Enddatum eingeben kann.
Möchte die Datei nicht 365 mal für ein Jahr kopieren und manuell für jeden Tag das Datum als Name ändern.

Habe es geschafft, dass ich eine Zahl fortlaufend kopieren kann oder das hinter dem Datum eine fortlaufende Zahl angehangen wird, aber nicht, dass nur das Datum +1 (einen Tag) erweitert wird.

Vielleicht habt ihr ja eine Idee für mich.

Ich danke Euch :-)

Dieser Beitrag wurde von Boost12 bearbeitet: 27. November 2017 - 20:44

0

Anzeige



#2 Mitglied ist offline   Boost12 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. November 17
  • Reputation: 0

geschrieben 29. November 2017 - 00:00

Hat wirklich niemand eine Idee?

MfG :-)
0

#3 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 204
  • Beigetreten: 30. Juni 12
  • Reputation: 9

geschrieben 29. November 2017 - 03:12

Habe das meiste auch nur gegoogled und modifiziert...
Laut deiner Beschreibung habe ich es so verstanden:

@echo off
::Startdatum (führende Null nicht vergessen bei Zahlen < 10)
set tag=01
set monat=01
set jahr=2018

::Format angeben in ttmmjjjj
set ende_umbenennen=31122018


::Datei zum kopieren
set "Dateiendung=xls"
set "Copy_File=%tag%.%monat%.%jahr%.%Dateiendung%"


if NOT exist "%Copy_File%" (echo Datei existiert nicht&pause &exit)

IF %tag%==10 goto :weiter
IF %tag%==20 goto :weiter
IF %tag%==30 goto :weiter
set "tagX=%tag%"
set tagx=%tagx:0=%
set /A tag=%tagX%
:weiter


:loop

set /a Schaltjahr=%jahr%%%4
if %jahr:~-2%==00 set /a Schaltjahr+=%Jahr:~,2%%%4

set korrektur=false

IF %tag%==28 IF %Schaltjahr% neq 0 if %monat%==02 set monat=03& set tag=1& set korrektur=true
IF %tag%==29 IF %monat%==02 set monat=03& set tag=1& set korrektur=true

IF not %tag%==30 goto :notag30
IF %monat%==04 set monat=05& set tag=1& set korrektur=true
IF %monat%==06 set monat=07& set tag=1& set korrektur=true
IF %monat%==09 set monat=10& set tag=1& set korrektur=true
IF %monat%==11 set monat=12& set tag=1& set korrektur=true
:notag30

IF not %tag%==31 goto :notag31
IF %monat%==01 set monat=02& set tag=1& set korrektur=true
IF %monat%==03 set monat=04& set tag=1& set korrektur=true
IF %monat%==05 set monat=06& set tag=1& set korrektur=true
IF %monat%==08 set monat=09& set tag=1& set korrektur=true
IF %monat%==07 set monat=08& set tag=1& set korrektur=true
IF %monat%==10 set monat=11& set tag=1& set korrektur=true
IF %monat%==12 set monat=01& set tag=1& set /a jahr+=1& set korrektur=true
:notag31

IF "%korrektur%"=="false" set /a tag+=1


set "tagX=0%tag%"
set "tagX=%tagx:~-2%"
echo Kopiere %Copy_File% nach %tagx%.%monat%.%jahr%.%Dateiendung%
copy "%Copy_File%" "%tagx%.%monat%.%jahr%.%Dateiendung%">NUL


IF "%tagx%%monat%%jahr%" NEQ "%ende_umbenennen%" goto loop
pause

Dieser Beitrag wurde von MasterP82 bearbeitet: 29. November 2017 - 03:19

1

#4 Mitglied ist offline   Boost12 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. November 17
  • Reputation: 0

geschrieben 29. November 2017 - 14:21

Hi MasterP82

Das ist ja echt super von dir, sehr sehr geil. Danke

Jedoch habe ich damit noch zwei Probleme.

Vielleicht habe ich in dem Code auch was falsches angepasst.

Meine Änderung: Habe das Startdatum und das Enddatum eingegeben

@echo off
::01.01.2018 (führende Null nicht vergessen bei Zahlen < 10)
set tag=01
set monat=01
set jahr=2018

::Format angeben in ttmmjjjj
set ende_umbenennen=31.12.2018


::Datei zum kopieren
set "Dateiendung=xlsm"
set "Copy_File=%tag%.%monat%.%jahr%.%Dateiendung%"


Mein Enddatum ist der 31.12.2018

aber der Code hört nicht auf zu kopieren und macht auch einfach nach 2018 weiter mit 19,20,21 usw. wenn man es nicht beendet.

Ich weiß nicht wann er für 2018 fertig ist mit kopieren, wenn ich zu spät abbreche ist er schon bei 2020 und dann werden die Daten so abgelegt:

01.01.2018
01.01.2019
01.01.2020
01.02.2018
01.02.2019
01.02.2020
01.03.2018
01.03.2019
01.03.2020
01.04.2018
01.04.2019
01.04.2020


Jetzt meine Frage:

Was muss geändert werden, das der Code die Datei wirklich nur bis zum Enddatum 31.12.2018 kopiert und das auch jeder Monat nach dem anderen generiert wird und nicht erst alle 01

01.01.2018
01.02.2018
01.03.2018 usw.

sondern

01.01.2018
02.01.2018
03.01.2018


ist es auch möglich, das man mit dem Code Neue Ordner erstellen kann mit den Monatsnamen = Januar, Februar, März usw.
und der Code kopiert die neu erstellten Kopien in den jeweils passenden Monat?


Ich danke dir bzw euch :-)
0

#5 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 204
  • Beigetreten: 30. Juni 12
  • Reputation: 9

geschrieben 29. November 2017 - 14:38

bei set ende_umbenennen=31.12.2018 hatte ich keine punkte gesetzt
oder du änderst jetzt bei der vorletzten Zeile "%tagx%%monat%%jahr%" -> "%tagx%.%monat%.%jahr%"


deine zweite frage verstehe ich nicht. dein Problem ist die Reihenfolge im Dateinamen und die Sortierung von Windows. Es sind alle Deiten vorhanden, im cmd-Fenster siehst du die wie es ausgegeben wird.! Besser wäre gewesen 2018.12.31, deine Vorgabe war andersrum.

Dieser Beitrag wurde von MasterP82 bearbeitet: 29. November 2017 - 14:40

1

#6 Mitglied ist offline   Boost12 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. November 17
  • Reputation: 0

geschrieben 29. November 2017 - 14:57

Ja super habe es mit den Punkten geändert, so wie du es gesagt hast.
Jetzt passt es sehr gut.


Ja ich dachte die Dateien werden für jeden Monat sortiert ausgegeben

01.01.2018
02.01.2018
03 usw


und das man vielleicht auch neue Ordner erstellen könnte wo sie hinein kopiert werden.
Falls es nicht geht, nicht schlimm. Dann sortiere ich alle per Hand.

Du hast mir ja schon sehr mit deinem Code geholfen, bin wirklich sehr froh.
0

#7 Mitglied ist offline   Boost12 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 27. November 17
  • Reputation: 0

geschrieben 29. November 2017 - 16:34

Habe es jetzt so geändert wie du es vorgeschlagen hast 2018.01.01

Danke :-)
0

#8 Mitglied ist offline   Phipz87 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 30. Dezember 20
  • Reputation: 0

geschrieben 30. Dezember 2020 - 14:10

Was könnte man machen, wenn man kein Wochenende haben möchte?

Danke
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0