BAT - Dateien kopieren und durchnummerieren?

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

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

xibanana98 
Beitragsersteller
 03.08.2017, 10:45

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.

           
)

0
DevTutorial  03.08.2017, 10:18

Da bist du im Urlaub und quälst dich mit solchen undurchsichtigen Fragen... 

0
xibanana98 
Beitragsersteller
 03.08.2017, 08:07

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.

0

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




xibanana98 
Beitragsersteller
 02.08.2017, 10:18

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ß

0