Kein excel frage / Frage zu einer .Bat

Alle anderen Themen ...

Moderator: ModerationP

Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 12:47

Hallo,

ich weiß es gehört nicht zu Excel aber ich wusste nicht, wo mir sonst so gut geholfen werden kann wie hier :)

Ich habe mir eine BAT datei erstellt, diese klappt auch eigentlich gut, doch leider stoppt es nicht :(

Code: Alles auswählen
@echo off
::Startdatum (führende Null nicht vergessen bei Zahlen < 10)
set tag=01
set monat=02
set jahr=2021

::Format angeben in jjjjmmdd
set ende_umbenennen=2021-02-31


::Datei zum kopieren
set "Dateiendung=xlsx"
set "Copy_File=2021-02-01_PT_RELEASE INCL ANALYST CODE.%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%" "%jahr%-%monat%-%tagx%_PT_RELEASE INCL ANALYST CODE.%Dateiendung%">NUL


IF "2021-02-31_PT_RELEASE INCL ANALYST CODE" NEQ "%ende_umbenennen%" goto loop
pause


Es soll die Datei kopiert werden und anschließend umbenennen in den jeweiligen nächsten Tag. Das möchte ich immer für einen Monat ausführen und es soll auch immer nur der Monat erstellt werden. Jedoch läuft es immer weiter und stoppt nicht...

Original sah es so aus:
Code: Alles auswählen
@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


was noch sehr schön wäre, wenn kein Wochenende dabei wäre.

Gerne kann man das auch in eine Exceldatei umwandeln :)

Vielen Dank und ein guten rutsch ein neue jahr wünsche ich schon mal im voraus :)
Phipz87

edit < Peter >
Aus dem Excel-Forum verschoben
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Fen » 30. Dez 2020, 13:08

Hallo,

nach einem ersten Blick geht es um das Kopieren und Umbennen von Dateien. Das wird heute eher mit Powershell, zur Not auch mit VBA gemacht. Es wäre vielleicht besser die Aufgabe mit Worten zu beschreiben.

Ich bin immer überrascht, wie oft noch im CMD programmiert wird. In www.Administrator.de kommen fast täglich Fragen und Beispiele.

mfg
Fen
 

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 13:17

Ich habe die Datei mit folgendem Namen:
"2021-02-01_PT_RELEASE INCL ANALYST CODE.xlsx"
jetzt muss ich diese Datei für jeden Tag im Feb. haben. also so z.b:

2021-02-02_PT_RELEASE INCL ANALYST CODE
2021-02-02_PT_RELEASE INCL ANALYST CODE
2021-02-03_PT_RELEASE INCL ANALYST CODE
usw.

Ich benötige die Datei nur für Wochentage also kein Wochenende.
Ich muss das immer am letzten Arbeitstag im Monat für den Folge Monat erstellen.

Danke
Phipz87
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon HKindler » 30. Dez 2020, 13:22

Hi,

fällt dir da etwas auf?
Code: Alles auswählen
::Format angeben in jjjjmmdd
set ende_umbenennen=2021-02-31

Da es keinen 31.02. gibt, auch nicht im Jahr 2021, kannst du lange kopieren...
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6280
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 13:35

okay den fehler habe ich behoben und am ende mit
"IF "%jahr%-%monat%-%tagx%" NEQ "%ende_umbenennen%" goto loop"

erledigt

Gibt es jetzt noch eine möglichkeit für das Wochenende?

Danke
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Fennek » 30. Dez 2020, 13:59

So könnte es mit Powershell gehen:

Code: Alles auswählen
$Pfad = $env:USERPROFILE + '\desktop\'
$file = 'test.xlsx'
$heute = get-date -Day 1 -Hour 0 -Minute 0 -Second 0

$nxMth_Anf = $heute.AddMonths(1)
$nxMth_End = ($nxMth_Anf).AddMonths(1).AddSeconds(-1)

$i = 0
while ($nxMth_Anf.AddDays($i) -le $nxMth_End) {
    if ($nxMth_Anf.AddDays($i).DayOfWeek -le 6) {
        $strDate = ('{0:yyyy-mm-dd}' -f $nxMth_Anf.AddDays($i)) + 'PT_RELEASE INCL ANALYST CODE.xlsx'
        $strDate
        copy-item ($Pfad + $file) ($Pfad + $strDate)
     }

    $i++
}
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 824
Registriert: 12. Feb 2016, 18:56

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 14:03

Leider habe ich hier kein Powershell und habe mich mit diesem Programm auch noch nie ausgesetzt :(
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Fen » 30. Dez 2020, 14:06

Powershell ist seit mindestens 8 Jahreb auf jedem Windows-PC. Ggf muss es mit Admin-Rechten freigeschaltet werden (oder -exp by)
Fen
 

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 14:09

okay gerade gesehen, dass ich die app starten kann...
aber wie und was ich da machen soll/kann weiß ich 0
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Fen » 30. Dez 2020, 14:13

Der Code erwartet eine Beispiel-xlsx mit dem Namen "Test.xlsx" auf dem Desktop. Das kann aber mit den Variablen $Pfad und $file geändert werden.

Die Kopien werden ebenfalls in $Pfad gespeichert.

Bei Bedarf passe ich den Code entsprechend an.
Fen
 

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 14:14

Ich schreib dir privat eine Nachricht

Gerade gesehen, dass ich dir keine senden kann...

Ja ich hätte Bedarf an sowas :)
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Fennek » 30. Dez 2020, 14:17

Sende die PN an "Fennek"

Sind die Dateien immer im selben Ordner, oder gibt es jeden Monat einen anderen?
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 824
Registriert: 12. Feb 2016, 18:56

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon DerHoepp » 30. Dez 2020, 14:28

Moin,

ich mal wieder. Welchen Sinn hat es überhaupt, die gleiche Datei massenhaft nur mit unterschiedlichem Namen vorzuhalten?

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9709
Registriert: 14. Mai 2013, 11:08

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Phipz87 » 30. Dez 2020, 14:30

Weil wir das hier so brauchen...
Und 1 Monat ist ja jetzt keine Maßen :)
Phipz87
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 351
Registriert: 26. Mär 2015, 16:50

Re: Kein excel frage / Frage zu einer .Bat

Beitragvon Fennek » 30. Dez 2020, 14:32

Kleine Korrektur:

Code: Alles auswählen
$Pfad = $env:USERPROFILE + '\desktop\'
$file = 'test.xlsx'
$heute = get-date -Day 1 -Hour 0 -Minute 0 -Second 0

$nxMth_Anf = $heute.AddMonths(1)
$nxMth_End = ($nxMth_Anf).AddMonths(1).AddSeconds(-1)

$i = 0
while ($nxMth_Anf.AddDays($i) -le $nxMth_End) {
    if (($nxMth_Anf.AddDays($i).DayOfWeek.value__ -lt 6) -and ($nxMth_Anf.AddDays($i).DayOfWeek.value__ -gt 0)) {
        $strDate = ('{0:yyyy-mm-dd}' -f $nxMth_Anf.AddDays($i)) + 'PT_RELEASE INCL ANALYST CODE.xlsx'
        copy-item ($Pfad + $file) ($Pfad + $strDate)
     }
    $i++
}


Jetzt ohne Wochenende.
Zuletzt geändert von Fennek am 30. Dez 2020, 14:36, insgesamt 1-mal geändert.
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 824
Registriert: 12. Feb 2016, 18:56

Nächste

Zurück zu Offtopic (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste