Avatar billede Gramstrup Mester
29. juli 2013 - 09:00 Der er 11 kommentarer og
1 løsning

Programmering af BAT fil

Vi et lille program som køre via Windows opgavestyring en gang i døgnet.
Det tager en kopi af en bestemt fil og tilføjer dagens dato. Men vi kunne rigtigt godt tænke os at den også tilføjer om det er Mandag, Tirsdag o.s.v. Er det muligt?

Den kodning som vi bruger i dag er:

CHCP 1252

echo %date% %time:~0,8%: Running script >> "\\ntmaltA\DATA1\Afdeling\Lager\Transvision udtræk\Kostrapporter\ArkiverKostRapportLog.txt"

set todaysdate=%date:~6,4%-%date:~3,2%-%date:~0,2%
COPY "\\ntmaltA\DATA1\Afdeling\Lager\Transvision udtræk\Kostrapporter\Kostrapport.csv" "\\ntmaltA\DATA1\Afdeling\Lager\Transvision udtræk\Kostrapporter\Arkiv\Kostrapport_%todaysdate%.csv"
Avatar billede claes57 Ekspert
29. juli 2013 - 11:32 #1
du skal via vbs for at få ugedage med.
Avatar billede supertekst Ekspert
29. juli 2013 - 14:15 #2
Alternativt kunne ugedagen tilføjes i efterfølgende opgavestyring via lidt VBA - eller evt. samle alt i VBA.

Hvor skal ugedagen placeres i filnavnet?
Avatar billede supertekst Ekspert
29. juli 2013 - 15:35 #3
f.eks:

Const filDerKopieres = "Filen.txt"
Dim sti As String, fraFil As String, tilFil As String
Dim ugedag As String
Private Sub Workbook_Open()
    ugedag = WeekdayName(Weekday(Date, vbMonday))
    sti = ActiveWorkbook.Path
   
    fraFil = sti & "\" & filDerKopieres
    tilFil = sti & "\" & "kopiAfFilen" & Format(Now, "dd-mm-yy") & "_" & ugedag

    FileCopy fraFil, tilFil
End Sub
Avatar billede Gramstrup Mester
29. juli 2013 - 15:56 #4
For ikke at lave lort i nogen af vores ting tro jeg den rigtige løsning vil være at lave en VBA som kan sætte Dags navnet sidst i enden på alle filerne i en mappe hvor CSV filerne ligger.
Den skal altså ikke lave en kopi af filerne, men kun sætte Dagen ind.
Hvordan vil en VBA se ud som sætter Dagen på alle filerne i en mappe?
Avatar billede supertekst Ekspert
29. juli 2013 - 16:03 #5
Så skal der vel også tages højde for de filer som på sigt har fået tilsat ugedag?
Avatar billede Gramstrup Mester
29. juli 2013 - 16:32 #6
Hvis det er nemt at gøre vil det være fint. Men ellers så vil det godt kunne fungere med at den sætter ugedag på alle filer.
Det er en speciel mappe som de vil ligge i, og den vil blive tømt når man har kørt den rapport som du hjalp med at lave i sidste uge.
Avatar billede HKW Nybegynder
29. juli 2013 - 17:06 #7
En helt anden vej er at ændret det i Windows' regionale indstillinger. Her kan du sætte ugedagen på.
Avatar billede supertekst Ekspert
29. juli 2013 - 17:39 #8
Dim ugedag As String
Dim sti As String, filnavn As String, linje As String, tabel As Variant
Dim dato As Date, ptNavn As String, nytNavn As String
Public Sub tilsætUgedag()
    sti = ActiveWorkbook.Path & "\"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(sti)
    Set fc = f.Files
   
Rem traverser den aktuelle mappe - find filer med extension .dat
    For Each f1 In fc
        filnavn = LCase(f1.Name)
        If LCase(Right(filnavn, 3)) <> "dag" And InStr(LCase(filnavn), "tilsætugedag") = 0 Then
            dato = Right(filnavn, 8)
            ugedag = WeekdayName(Weekday(dato, vbMonday))
           
            ptNavn = sti & filnavn: nytNavn = sti & filnavn & ugedag
            Name ptNavn As nytNavn
        End If
    Next
   
    MsgBox "Gennemløb afsluttet"
End Sub
Avatar billede Gramstrup Mester
29. juli 2013 - 19:14 #9
Kan ikke helt få den til at fungere. Men kan også se i den grønne tekst at der står at at den finder filer med extension .dat
Det er CSV filer som der skal laves om på.

Når jeg køre makroen er det denne linie som bliver GUL:

dato = Right(filnavn, 8)

Og når jeg holder musen henover står der følgende:

Dato = 00:00:00
Filnavn = Kostrapport_2013-06-05

Er det fordi den ikke kan genkende datoen?
Avatar billede supertekst Ekspert
29. juli 2013 - 23:08 #10
Hvis du har mulighed for at sende et lille udvalg af filerne - hvis flere typer - så instruks herom.
Avatar billede supertekst Ekspert
30. juli 2013 - 10:05 #11
Const filDataSti = "C:\Users\peter\Desktop\Klas\"  '<---- justeres
Dim ugedag As String
Dim sti As String, filnavn As String
Dim filDato As String, dato As Date, ptNavn As String, nytNavn As String
Public Sub tilsætUgedag()
    sti = filDataSti
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(sti)
    Set fc = f.Files
   
Rem traverser den aktuelle mappe - find filer med extension .dat
    For Each f1 In fc
        filnavn = Replace(LCase(f1.Name), ".csv", "")
       
        If LCase(Right(filnavn, 3)) <> "dag" And InStr(LCase(filnavn), "tilsætugedag") = 0 Then
            filDato = Right(filnavn, 10)
            ugedag = WeekdayName(Weekday(filDato, vbMonday))
           
            ptNavn = sti & filnavn & ".csv": nytNavn = sti & filnavn & "_" & ugedag & ".csv"
            Name ptNavn As nytNavn
        End If
    Next
   
    MsgBox "Gennemløb afsluttet"
End Sub
Avatar billede supertekst Ekspert
30. juli 2013 - 10:42 #12
Et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester