BAT - Dateien kopieren und durchnummerieren?
Guten morgen,Ich habe mein Berichtsheft auf dem Computer abgelegt, da ich dieses jede monat aufs neue 4 mal kopieren muss, name und nummer ändern muss wollte ich dies in einer Bat-Datei realisieren, da ich aber ein absoluter neuling auf diesen gebiet bin bräuchte ich bitte schnellstens hilfe. Gruß
2 Antworten
Ich klinke mich mal ein...
Hmmm eigentlich sollte ich im Strandkorb brutzeln...
Deutsche Sprache schwere Sprache...
Du überflutet uns mit dermaßen vielen Nebensächlichkeiten., nur den Kern bringst du nicht rüber...
Müssen alle 120 oder mehr Dateien wohin bewegt werden?
In einer Batch arbeite ich mit Dateinamen und (zähl)Schleifen und Variablen. Ich muss nicht wissen was du wie oft schreiben musst oder der der Goldfisch ertrunken ist. Wichtig für mich sind Dateinamen . und was mit den Dateien passieren soll.
Welche Dateien sollen wohin kopiert werden. Namen und Fakten....
Was ist das Berichtsheft?
Eine Text-Datei oder was?
Wie sieht der dateiname aus.. zB. Berichtheft001.txt
Wohin soll die betreffende Datei kopier werden?
Im einfachsten Fall genügt sowas als Lösung:
xcopy 'berichtsheft*.txt' 'Laufwerk:\Zielort'
Der * ist lediglich der Joker für das was die zu kopierenden Dateinamen unterscheidet
Wie auch immer... Bisher interpretiere ich dein Frage so:
Du hast in einem Ordner Dateien (mit irgedas drin). Bevor du ein neuen Bericht schreibst , erzeugst du eine Kopie der zuletzt erstellten Datei und schreibst den aktuellen Bericht in diese. Die neue Datei hat dann den gleichen BasisName aber die nächsthöhere fortlaufende Nummer.
Beim nächsten mal kopierst Du diese wiederum in eine neue etc.
Die alten Dateien fungieren sozusagen als Backup der vorangehenden.
Dann wäre eine Batch einfach unnötig.
Dann wäre es einfacher das bisherige Berichtsheft in deine Textverarbeitung? zu laden und mit speiCher unter die Kopie zu erzeugen
Habs mittlerweile durch viel recherche selbst hinbekommen..
@ECHO
OFF
REM
Aufgabe:
REM
Kopiere alle Dateien aus Quelle nach Ziel
REM
und benenne sie dabei fortlaufend numerisch um
REM
und behalte den Dateityp bei
REM
Lokale Parameter
SET
Quelle=
SET
Ziel=
REM
Startwert für die Nummer
chcp
1252>nul
set
ue=ü
chcp
850>nul
set
/p "Zahl=Gew%ue%nschte Berichtsefts nummer:"
REM
Wir müssen erst die "Delayed Expansion" einschalten
SETLOCAL
ENABLEDELAYEDEXPANSION
REM
Das DIR-Kommando gibt die Dateien in der gewünschten Folge zurück
FOR
/F "usebackq tokens=*" %%i IN (`DIR "%Quelle%" /A:-D /B`)
DO (
ECHO Alt: "%Quelle%\%%i"
REM "Delayed Expansion" per Notation nutzen: Die Variable, die in
jedem Durchlauf
REM erweitert werden soll, muss in Ausrufezeichen eingefasst sein
REM Um die ursprüngliche Dateierweiterung beizubehalten, hier nochmal
REM derselbe Trick, diesmal mit Zeichenfolgen-Funktion (4 letzte Zeichen)
SET Zielname=%%i
ECHO Neu: "%Ziel%\!Zahl!!Zielname:~+3!"
ECHO.
COPY "%Quelle%\%%i" "%Ziel%\!Zahl!!Zielname:~+3!"
ECHO.
)
Da bist du im Urlaub und quälst dich mit solchen undurchsichtigen Fragen...
066Berichtsheft-Nachname, Vorname_01.09.2016
Das wäre der Dateiname, diese Datei ist im Ordner wo die anderen auch sind. Also von 01-66. So, die Batch soll erkennen das die letzte nummer 66 war. Im Anschluss möchte ich die Anzahl an kopien angeben und dann soll der mir z.b. 10 Berichtshefte bis nummer 76 Ausgeben.
Mit einer Batch Datei wäre das viel leichter meiner Meinung nach.
Guten Tag xibanana98,
leider haben sie Ihre Frage sehr ungenau gestellt. Aus diesem Grund kann ich Ihnen nicht versichern dass Ihnen dieses Antwort reicht.
Wenn sie mir Ihre Problem genau Beschreiben können, kann ich Ihnen gerne noch weiter helfen.
Ich habe Ihnen hier mal einen kleinen Ansatz vorprogrammiert.
Zum Kopieren:
robocopy "<ANFANGSORDNER>" "<ENDORDNER>" /MIR
Zähler/Vorlaufende Zahl:
set COUNT=1
:Loop
<AKTION>
set /a COUNT= %COUNT% + 1
goto Loop
----------------------------------------------------------------------------------------------------
Bei Rückfragen können sie weiteren Fragen gerne unter diese Antwort stellen.
Ich wünsche Ihnen einen angenehmen Freitag und ein schönes Wochenende
Mit freundlichen Grüßen
TutorialHouse
Folgendes: In einen beliebigen Ordner liegt das Berichtsheft beispielsweise von 1-120, angenommen ich brauche wieder kopien soll das programm die Nummer 120 erkennen und davon weiter zählen. Im programm möchte ich die Anzahl der Kopien angeben. Ich hoffe das es jetzt verständlicher ist.
Gruß