Eine Datei (Wordvorlage) mehrfach x-mal kopieren?
Moderators: Hacker, Stefan2, white
Eine Datei (Wordvorlage) mehrfach x-mal kopieren?
Hallo,
habe folgendes Problem:
Ich habe eine Wordvorlage und benötige diese für jede Woche als leeres Formular. Aus diesem Grund möchte ich die Datei auf einem Rutsch x-mal kopieren und diese anschließend mit MUT mit den Daten der Wochen umzubennen, die aus einer txt-Datei kommen. MUT funktioniert ohne Probleme.
Gibt es im TC eine Möglichkeit die Ursprungsdatei auf "einen Rutsch" x-mal zu kopieren und evtl. einen Zähler zu übergeben?
habe folgendes Problem:
Ich habe eine Wordvorlage und benötige diese für jede Woche als leeres Formular. Aus diesem Grund möchte ich die Datei auf einem Rutsch x-mal kopieren und diese anschließend mit MUT mit den Daten der Wochen umzubennen, die aus einer txt-Datei kommen. MUT funktioniert ohne Probleme.
Gibt es im TC eine Möglichkeit die Ursprungsdatei auf "einen Rutsch" x-mal zu kopieren und evtl. einen Zähler zu übergeben?
Hi juku77, willkommen.
Das kann man mit einer Skriptsprache deines Betriebssystems erledigen.
Der TC kann dabei einem Skript den Pfad des aktiven und inaktiven Fenster übergeben.
Im Skript könnte man den Pfad zu deiner Wordvorlage fest eintragen.
Das Skript kann die neue Datei auch gleich mit dem aktuellen Datum benennen.
Also, was benötigst du:
- Wordvorlage einfach x-mal mit Zähler kopieren?
- x-mal ist fest vorgegeben, oder wird abgefragt?
- oder
- Wordvorlage wird im aktiven Fenster mit aktuellem Datum erstellt?
oder ....
Das kann man mit einer Skriptsprache deines Betriebssystems erledigen.
Der TC kann dabei einem Skript den Pfad des aktiven und inaktiven Fenster übergeben.
Im Skript könnte man den Pfad zu deiner Wordvorlage fest eintragen.
Das Skript kann die neue Datei auch gleich mit dem aktuellen Datum benennen.
Also, was benötigst du:
- Wordvorlage einfach x-mal mit Zähler kopieren?
- x-mal ist fest vorgegeben, oder wird abgefragt?
- oder
- Wordvorlage wird im aktiven Fenster mit aktuellem Datum erstellt?
oder ....
zB so:
- den Code als Textdatei mit VBS-Endung speichern:
C:\Totalcmd\KopiereDatei-inAktivesFenster-mitWoche.vbs
- den Code bei "user settings" anpassen
- Button erstellen (siehe im Skript)
- in einen Ordner wechseln und den Button anklicken
Dies kopiert
"L:\aufwerk\Pfad zu\Wordvorlage.docx"
zu
aktuellem Pfad\Vorlage_(KW7).docx
aktuellem Pfad\Vorlage_(KW8).docx
aktuellem Pfad\Vorlage_(KW9).docx
- Verbesserungswünsche posten.
- den Code als Textdatei mit VBS-Endung speichern:
C:\Totalcmd\KopiereDatei-inAktivesFenster-mitWoche.vbs
- den Code bei "user settings" anpassen
- Button erstellen (siehe im Skript)
- in einen Ordner wechseln und den Button anklicken
Dies kopiert
"L:\aufwerk\Pfad zu\Wordvorlage.docx"
zu
aktuellem Pfad\Vorlage_(KW7).docx
aktuellem Pfad\Vorlage_(KW8).docx
aktuellem Pfad\Vorlage_(KW9).docx
- Verbesserungswünsche posten.
Code: Select all
REM https://ghisler.ch/board/viewtopic.php?t=49428
REM Kopiere Wordvorlage in aktuellen Ordner mit neuem Namen
REM
REM Button erstellen (siehe http://www.ghisler.ch/wikide/index.php?title=Buttonbar)
REM --- Kommando: "L:\aufwerk\Pfad zu\diesemSkript.vbs"
REM --- Parameter: "%P"
REM --- Startpfad:
REM --- Icondatei: %Commander_Path%\WCMICONS.DLL
REM --- Icon: <aussuchen>
REM --- Tooltip: Kopiere Wordvorlage
REM --- Programm ausführen: [_]als Symbol (minimiert) / [_]maximiert
REM =========================================================================
REM USER SETTINGS
REM Wordvorlage
strVorlagePfad="L:\aufwerk\Pfad zu\"
strVorlageName="Wordvorlage.docx"
REM geänderter Vorlagename, falls gewünscht:
strNeuerName="Vorlage.docx"
REM Zeichenkette vor bzw. nach dem Zähler (auch LEER erlaubt: ""):
strZaehlerPrefix = "_(KW"
strZaehlerSuffix = ")"
REM Der neue Namen wird folgendermaßen gebildet:
REM Neuer Name = strNeuerName-BASEname & strZaehlerPrefix & intZaehler & strZaehlerSuffix & strNeuerName-EXTENSION
REM Beispiel: Wordvorlage + _(KW + 7 + ) + .docx
REM =========================================================================
REM DAS SKRIPT
SET FSO = WScript.CreateObject("Scripting.FileSystemObject")
SET WSO = WScript.CreateObject("WScript.Shell")
SET ARGs = WScript.Arguments
REM aktuell aktives Fenster, TC-Parameter "%P":
If ARGS.Count = 0 Then
MsgBox "Kein Parameter übergeben. Ich habe fertig."
WScript.Quit
Else
strZielOrdner = ARGs(0)
End If
REM Anzahl Kopien:
intAnzahl = InputBox("Anzahl Kopien:", "TC-Skript", 1)
If (intAnzahl = "") Then intAnzahl = 1
REM Zählerstartvorgabe, zB gewünschte Start-KW:
strKW = ISOWeekNum(Now)
intZaehler = 1
intZaehler = InputBox("Zählerstart (z.B. gewünschte StartWoche):", "TC-Skript", strKW)
If (intZaehler = "") Then WScript.Quit
REM Erstelle neue Datei durch kopieren mit neuem Namen:
For i=1 to intAnzahl
REM intZaehler = right("000000"&intZaehler, 2) ' zweistelliger Zähler
strZielName = FSO.GetBaseName(strNeuerName) & strZaehlerPrefix & intZaehler & strZaehlerSuffix & "." & FSO.GetExtensionName(strNeuerName)
REM MsgBox "CopyFile " & vbLF & strVorlagePfad & "\" & vbLF & strVorlageName & vbLF & " ..zu.. " & vbLF & strZielOrdner & "\" & strZielName
If Not (FSO.FileExists(strZielOrdner & "\" & strZielName)) Then
FSO.CopyFile strVorlagePfad & "\" & strVorlageName , strZielOrdner & "\" & strZielName, False
intZaehler = intZaehler +1
End If
Next
REM =========================================================================
Function ISOWeekNum(dtmDate)
' Returns a WeekNumber from a date
NearThurs = ((dtmDate+5) \ 7) * 7 - 2
ISOWeekNum = ((NearThurs - DateSerial(Year(NearThurs), 1, 1)) \ 7) + 1
End function
REM =========================================================================
VBScript: Kopiere Vorlage und Kalenderwoche Datum
zu 1:
wieso? einfach so schreiben?!?
Umlaute sind doch kein Problem? Oder?
zu 2:
zB so:
- den Code als Textdatei mit VBS-Endung speichern:
C:\Totalcmd\KopiereDatei-inAktivesFenster-mitWoche.vbs
- den Code bei "user settings" anpassen
- Button erstellen (siehe im Skript)
- in einen Ordner wechseln und den Button anklicken
Dies kopiert
"L:\aufwerk\Pfad zu\Wordvorlage.docx"
zu
2018-02-12_2018-02-16 Vorlage.docx
2018-02-19_2018-02-23 Vorlage.docx
2018-02-26_2018-03-02 Vorlage.docx
wieso? einfach so schreiben?!?
Umlaute sind doch kein Problem? Oder?
zu 2:
zB so:
- den Code als Textdatei mit VBS-Endung speichern:
C:\Totalcmd\KopiereDatei-inAktivesFenster-mitWoche.vbs
- den Code bei "user settings" anpassen
- Button erstellen (siehe im Skript)
- in einen Ordner wechseln und den Button anklicken
Dies kopiert
"L:\aufwerk\Pfad zu\Wordvorlage.docx"
zu
2018-02-12_2018-02-16 Vorlage.docx
2018-02-19_2018-02-23 Vorlage.docx
2018-02-26_2018-03-02 Vorlage.docx
Code: Select all
REM https://ghisler.ch/board/viewtopic.php?t=49428
REM Kopiere Wordvorlage in aktuellen Ordner mit neuem Namen
REM
REM Button erstellen (siehe http://www.ghisler.ch/wikide/index.php?title=Buttonbar)
REM --- Kommando: "L:\aufwerk\Pfad zu\diesemSkript.vbs"
REM --- Parameter: "%P"
REM --- Startpfad:
REM --- Icondatei: %Commander_Path%\WCMICONS.DLL
REM --- Icon: <aussuchen>
REM --- Tooltip: Kopiere Wordvorlage
REM --- Programm ausführen: [_]als Symbol (minimiert) / [_]maximiert
REM =========================================================================
REM USER SETTINGS
REM Wordvorlage
strVorlagePfad="L:\aufwerk\Pfad zu\"
strVorlageName="Wordvorlage.docx"
REM geänderter Vorlagename, falls gewünscht:
strNeuerName="Vorlage.docx"
REM Ergebnisbeispiele Mo-Fr:
' 2018-02-12_2018-02-16 Vorlage.docx
' 2018-02-19_2018-02-23 Vorlage.docx
' 2018-02-26_2018-03-02 Vorlage.docx
REM =========================================================================
REM DAS SKRIPT
SET FSO = WScript.CreateObject("Scripting.FileSystemObject")
SET WSO = WScript.CreateObject("WScript.Shell")
SET ARGs = WScript.Arguments
REM aktuell aktives Fenster, TC-Parameter "%P":
If ARGS.Count = 0 Then
MsgBox "Kein Parameter übergeben. Ich habe fertig."
WScript.Quit
Else
strZielOrdner = ARGs(0)
End If
REM Anzahl Kopien:
intAnzahl = InputBox("Anzahl Kopien:", "TC-Skript", 1)
If (intAnzahl = "") Then intAnzahl = 1
REM Zählerstartvorgabe, zB gewünschte Start-KW:
strKW = ISOWeekNum(Now)
intZaehler = 1
intZaehler = InputBox("Zählerstart (z.B. gewünschte StartWoche):", "TC-Skript", strKW)
If (intZaehler = "") Then WScript.Quit
REM Erstelle neue Datei durch kopieren mit neuem Namen:
For i=1 to intAnzahl
'Neuer Dateiname:
'Daten der KW von Montag bis Freitag nach Muster "YYYY-MM-DD_YYYY-MM-DD_Name.dotx "
sStart = GetDateFromWeek(intZaehler)
strDateStart = DatePart("yyyy",sStart) &"-"& right("0"&DatePart("m",sStart),2) &"-"& right("0"&DatePart("d",sStart),2)
sEnde = GetDateFromWeek(intZaehler+1)
strDateEnde = DatePart("yyyy",sEnde) &"-"& right("0"&DatePart("m",sEnde),2) &"-"& right("0"&DatePart("d",sEnde)-3,2)
strZielName = strDateStart &"_"& strDateEnde &" "& strNeuerName
If Not (FSO.FileExists(strZielOrdner & "\" & strZielName)) Then
FSO.CopyFile strVorlagePfad & "\" & strVorlageName , strZielOrdner & "\" & strZielName, False
intZaehler = intZaehler +1
End If
Next
REM =========================================================================
Function ISOWeekNum(dtmDate)
' Returns a WeekNumber from a date
NearThurs = ((dtmDate+5) \ 7) * 7 - 2
ISOWeekNum = ((NearThurs - DateSerial(Year(NearThurs), 1, 1)) \ 7) + 1
End function
REM =========================================================================
Function GetDateFromWeek( nWeek )
nCurWeek = DatePart("ww", Now, vbFirstFourDays)
vStart = DateSerial(Year(Now), Month(Now), Day(Now))
vStart = DateAdd("ww", nWeek - nCurWeek, vStart)
nDay = Weekday(vStart, vbMonday)
GetDateFromWeek = DateAdd("d", -nDay + vbMonday - 1, vStart)
End Function
REM =========================================================================
Zeile 74: FSO.CopyFile strVorlagePfad & "" & strVorlageName , strZielOrdner & "" & strZielName, Falsejuku77 wrote: liegt die Vorlage in einem Ordner mit Umlaut wird eine Fehlermeldung angezeigt.
Fehler in Zeile 74 - Pfad nicht gefunden.
Kann ich nicht nachvollziehen. Umlaute sollten auch nicht stören.
Ich habe deshalb nochmal getestet:
Code: Select all
SET FSO = WScript.CreateObject("Scripting.FileSystemObject")
SET ARGs = WScript.Arguments
strVorlagePfad="c:\temp\TC/Jürgen/"
strVorlageName="Öltanker und Ärzte haben öfters Überraschungsärger.jpg"
strZielOrdner = ARGs(0)
FSO.CopyFile strVorlagePfad & "\\" & strVorlageName , strZielOrdner & "\\\\Copy 5 " & strVorlageName, False
Habe ich keine Probleme mit.

Auch nicht bei mehrfachen Backslashes, falls das jemand denken sollte.
Muss an etwas anderem liegen

Hast du eventuell Leerzeichen in deinem Pfad zu /Jürgen/ und den '%P'-Parameter nicht in Anführungszeichen gesetzt?