Batch Datei und Zähler
Hallo,
ich benötige für eine Batch Datei einen Zähler der folgendes macht.
Hintergrund:
Jeden Tag werden 5 Dateien in einen Ordner für einen Filetransfer zur Verfügung gestellt. Die Dateien sind ab.txt , cd.txt, ef.txt etc...
Diese werden dann umbenannt in ab01.txt, cd01.txt etc...
Nun werden manchmal an einem Tag zwei oder mehrere von diesen Dateien erzeugt. Hierbei soll nun geprüft werden ob die Datei ab01.txt schon existiert, und wenn ja die umbennung in ab02.txt erfolgen. Diese soll natürlich für den Wertebereich 01 - 99 möglich sein.
Nun möchte ich natürlich nicht jede Datei mit If exist ab01.txt rename ab02.txt prüfen sondern dass Ganze über eine Schleife oder ähnliches lösen/automatisieren
Hat jemand dazu einen Tip?
ich benötige für eine Batch Datei einen Zähler der folgendes macht.
Hintergrund:
Jeden Tag werden 5 Dateien in einen Ordner für einen Filetransfer zur Verfügung gestellt. Die Dateien sind ab.txt , cd.txt, ef.txt etc...
Diese werden dann umbenannt in ab01.txt, cd01.txt etc...
Nun werden manchmal an einem Tag zwei oder mehrere von diesen Dateien erzeugt. Hierbei soll nun geprüft werden ob die Datei ab01.txt schon existiert, und wenn ja die umbennung in ab02.txt erfolgen. Diese soll natürlich für den Wertebereich 01 - 99 möglich sein.
Nun möchte ich natürlich nicht jede Datei mit If exist ab01.txt rename ab02.txt prüfen sondern dass Ganze über eine Schleife oder ähnliches lösen/automatisieren
Hat jemand dazu einen Tip?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 17431
Url: https://administrator.de/contentid/17431
Ausgedruckt am: 14.11.2024 um 21:11 Uhr
8 Kommentare
Neuester Kommentar
@pasman
Dem kann ich eigentlich nur wenig hinzufügen. Ich schaff das immer nicht, mich so kurz zu fassen.
In epischer Breite ausformuliert würde das sinngemäß so aussehen können:
::
Test: (im SrcFolder existieren ab.txt und cd.txt; im TargetFolder ab01.txt und ab02.txt)
Z:\>
Hier käme ein copy "Z:"\cd.txt "Z:\temp"\cd01.txt
Das war vermutlich das, was Du auch meintest.
Grüße
Biber
Dem kann ich eigentlich nur wenig hinzufügen. Ich schaff das immer nicht, mich so kurz zu fassen.
In epischer Breite ausformuliert würde das sinngemäß so aussehen können:
::
---------snipp copyCountedNames.bat
@echo off & setlocal
Set "AllMyFiles=ab cd ef gh ij"
Set SrcFolder="Z:"
Set TargetFolder="Z:\temp"
For %%i in (%AllMyFiles%) do (
if exist %SrcFolder%\%%i.txt call :copyAsNewName %%i
)
goto :eof
:copyAsNewName
Set "NewName="
for /L %%a in (1,1,9) do (
if not defined NewName if not exist %TargetFolder%\%10%%a.txt set "NewName=%10%%a.txt"
)
for /L %%a in (10,1,99) do (
if not defined NewName if not exist %TargetFolder%\%1%%a.txt set "NewName=%1%%a.txt"
)
echo Hier käme ein copy %SrcFolder%\%1.txt %TargetFolder%\%NewName%
goto :eof
::---------snapp copyCountedNames.bat
Test: (im SrcFolder existieren ab.txt und cd.txt; im TargetFolder ab01.txt und ab02.txt)
Z:\>
CopyCountedNames.bat
Hier käme ein copy "Z:"\ab.txt "Z:\temp"\ab03.txtHier käme ein copy "Z:"\cd.txt "Z:\temp"\cd01.txt
Das war vermutlich das, was Du auch meintest.
Grüße
Biber
Hm, Mado,
das scheint aber eine geringfügig andere Zielsetzung zu sein als in Deiner Anforderung oben.... *ggg
Ich weiß ja nicht genau, wo und was für Fehlermeldungen kommen - ich vermute mal, die kommen an der Stelle "Rename..." , falls schon gleichnamige Dateien da sind?
Kommentier doch kurz das "@Echo off" aus, damit Du etwas siehst.
Und ebenfalls erstmal auskommentieren würde ich die letzte Zeile (Quelldateien löschen).
Biber
das scheint aber eine geringfügig andere Zielsetzung zu sein als in Deiner Anforderung oben.... *ggg
Ich weiß ja nicht genau, wo und was für Fehlermeldungen kommen - ich vermute mal, die kommen an der Stelle "Rename..." , falls schon gleichnamige Dateien da sind?
Kommentier doch kurz das "@Echo off" aus, damit Du etwas siehst.
Und ebenfalls erstmal auskommentieren würde ich die letzte Zeile (Quelldateien löschen).
Biber
Tja, Mado,
<s>beim Setzen von %Newname% war ein führendes Leerzeichen zuviel. Sorry.
Hab ich oben auch eingefügt (set "NewName=%Newname:~1%").</s>
Mit den anderen Fehlermeldungen kann ich nichts anfangen (nicht reprozierbar bei mir).
Sollte ja auch nur eine Skizze sein.
Hast Du sonst noch Änderungen in meiner Skizze gemacht?
Biber
<s>beim Setzen von %Newname% war ein führendes Leerzeichen zuviel. Sorry.
Hab ich oben auch eingefügt (set "NewName=%Newname:~1%").</s>
Mit den anderen Fehlermeldungen kann ich nichts anfangen (nicht reprozierbar bei mir).
Sollte ja auch nur eine Skizze sein.
Hast Du sonst noch Änderungen in meiner Skizze gemacht?
Biber
Moin, mado,
der Fehler liegt hier:
...da hast Du ein Leerzeichen zuviel (am Ende der Zeile).
Wird also interpretiert als
Richtiger wäre, wenn Du es in Anfü-Zeichen setzt (auch wenn es bei M$ nicht dokumentiert ist, vertrau mir... *gg), also:
Set "SrcFolder=C:\TEST\AUSGANG"
Set "TargetFolder=C:\TEST\VERSAND"
Hand
Biber
der Fehler liegt hier:
Set SrcFolder=C:\TEST\AUSGANG
Set TargetFolder=C:\TEST\VERSAND
Set TargetFolder=C:\TEST\VERSAND
...da hast Du ein Leerzeichen zuviel (am Ende der Zeile).
Wird also interpretiert als
Set "SrcFolder=C:\TEST\AUSGANG "
Set "TargetFolder=C:\TEST\VERSAND "
Set "TargetFolder=C:\TEST\VERSAND "
Richtiger wäre, wenn Du es in Anfü-Zeichen setzt (auch wenn es bei M$ nicht dokumentiert ist, vertrau mir... *gg), also:
Set "SrcFolder=C:\TEST\AUSGANG"
Set "TargetFolder=C:\TEST\VERSAND"
Hand
Biber