Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 01.06.2011 um 06:33:22 Uhr
Verschoben von "Entwicklung" nach "Batch & Shell".
GELÖST

Batch script Zähler Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: zbyszek

zbyszek (Level 1) - Jetzt verbinden

31.05.2011, aktualisiert 01.06.2011, 4984 Aufrufe, 7 Kommentare

Hallo zusammen.
Nach ca 8 Std probieren bin ich am Ende

Ich ziehe täglich mit einem Batch-Script per ftp eine Datei vom Server in einen Logfiles-ordner (kein Problem soweit).

Die Logfiles sollen nicht überschrieben werden.

D.h.: Die erste Datei Log.txt soll in Alt_Log1.txt umbenannt werden.
Am nächsten Tag kommt erneut eine Log.txt da rein.
Die Alt_Log1.txt soll nun ins Alt_Log2.txt umbenannt werden und die Log.txt ins Alt_Log1.txt
oder wäre es nicht einfacher die neue Log.txt sofort ins Alt_log2.txt usw.?

Habe es bereits mit Abfragen:

if exists Alt_log1.txt ren Log.txt Alt_log2.txt probiert

aber da ist kein zähler / variable für Alt_log2.txt in ....log3.txt usw.

Wie kann ich also abfragen welche Datei (höhste Zahl) ist, damit ich die täglich neue Log.txt in Alt_log_xxx+1 ändern kann?

ich hoffe es ist verständlich erklärt.

Danke und VG
Mitglied: bastla
31.05.2011 um 22:12 Uhr
Hallo zbyszek und willkommen im Forum!

Eigentlich sollte es ja genügen, die neueste Datei zu suchen:
for /f "delims=" %%i in ('dir /b /a-d /od Alt_log_*.txt') do set "Neueste=%%i"
Wie Du dann an die Nummer kommst, scheinst Du ja schon zu wissen ...

Grüße
bastla
Bitte warten ..
Mitglied: Clijsters
31.05.2011 um 22:16 Uhr
Kurz und knackig:
01.
for /L %%X in (0,1,100) DO echo %%X 
02.
Ausgabe: 
03.
04.
05.
06.
07.
... 
08.
100 
09.
REM Oder: 
10.
 
11.
Set Hatzelknatzel=1 
12.
Set /A hatzelknatzel=%hatzelknatzel%+1 
13.
Auch hier wird hochgezählt. Aus dem Dateinamen kannst du theoretisch die Zahl herausziehen und dann %Zahlenname%+1 rechnen.
Ist das ungefähr nach deinen Vorstellungen?
Ich denke, das Einbauen in dein jetziges Batch ist nicht allzu schwierig...

Gruß
Dominique

[EDIT]
Zitat von bastla:
Hallo zbyszek und willkommen im Forum!

Eigentlich sollte es ja genügen, die neueste Datei zu suchen:
for /f "delims=" %%i in ('dir /b /a-d /od Alt_log_*.txt') do set 
> "Neueste=%%i" 
> 
Wie Du dann an die Nummer kommst, scheinst Du ja schon zu wissen ...

Grüße
bastla
Da macht man sich mal gemütlich auf den Pott und schon kommt wieder jemand, der einem zeigt, dass man eigentlich nichts kann

Naja, man gibt sein Bestes
Bitte warten ..
Mitglied: mathe172
31.05.2011 um 22:18 Uhr
Hallo,

versuchs mal hiermit:
01.
setlocal enabledelayedexpansion 
02.
pushd "C:/Logs/" 
03.
for /f "tokens=2 delims=g." %%A in ('dir /b /o:d "Alt_Log*.txt"') do if not defined LastFile set "LastFile=%%A" 
04.
for /l %%A in (%LastFile%,-1,1) do ( 
05.
set /a "FileNumber=%%A + 1" 
06.
ren Alt_Log%%A.txt Alt_Log!FileNumber!.txt 
07.
08.
ren Log.txt Alt_Log.txt 
09.
popd
-Ungetestet

MfG,
Mathe172
[Edit: War wohl etwas spät...]
Bitte warten ..
Mitglied: zbyszek
01.06.2011 um 10:09 Uhr
Danke erstmal für die schnellen Vorschläge.
Leider funktioniert das immer noch nicht
"Der angegeben Pfad kann nicht gefunden werden" und "Dateiname existiert bereits oder die Datei kann nicht gefunden werden"
Bitte warten ..
Mitglied: zbyszek
01.06.2011 um 10:20 Uhr
leider auch nicht

ich blicke jetzt noch weniger durch als vorher. Wie bekomme ich aus dem dateinamen die "Zahl" raus: für "Daten_alt_4.txt" wäre das die 4

Im Ordner habe ich jetzt: Daten_Alt_1.txt bis ...4.txt und die Daten.txt.
Für diese Daten.txt soll jetzt die 4 als Zahl gezogen werden und beim Umbenennen der Daten.txt in Daten_Alt_5.txt verwendet werden "(4+1)"

@Echo off

If exist c:\Test\Zahler\*alt*.txt goto alt

:neu

echo neue ist da

for /f "delims=" %%i in ('dir D* /b /a-d /od Daten.txt') do set "neue=%%i"

set a=2

echo %neue% ist die neue

set /A a=a+1

rem ren %neue% Daten_Alt_%a%.txt

goto ende

:alt

echo alte ist daaaa

REm for /f "skip=1

for /f "delims=" %%i in ('dir /b /a-d /od Daten_Alt*.txt') do set "alte=%%i"

echo %alte% ist die alte

If exist C:\Test\Zahler\Daten.txt goto neu

goto ende

:ende

REM echo die neue %neue% ist jetzt %alte%
Bitte warten ..
Mitglied: zbyszek
01.06.2011 um 11:09 Uhr
nicht so wirklich

probiere gerade so:

set a=1

for /f .....................

set /A a=a+1

ren %Neueste% Alt_log_%a%

oder so...?????????????
Bitte warten ..
Mitglied: mathe172
01.06.2011 um 13:28 Uhr
Hallo,

meinst du meinen Code? - Wenn ja, hast du in Zeile 2 den Pfad angepasst?

MfG,
Mathe172
Bitte warten ..
Ähnliche Inhalte
Linux
gelöst Umlaute zählen - Bash-Script (5)

Frage von plutowitsch zum Thema Linux ...

Sonstige Systeme
Batch Dateinamen zerlegen (5)

Frage von Mummel zum Thema Sonstige Systeme ...

Windows 10
gelöst Vbs oder batch zum Ändern von Dateinamen ab Zeichenkette (13)

Frage von vbaGast zum Thema Windows 10 ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Windows Server
Zertifikat am DC erneuern funktioniert nicht (13)

Frage von takvorian zum Thema Windows Server ...