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, 4959 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
Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(6)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Gruppenzugehörigkeit von AD Usern ermitteln - die Perfektion fehlt (11)

Frage von Stefan007 zum Thema Batch & Shell ...

LAN, WAN, Wireless
gelöst Netzwerk in 2 Teile trennen (11)

Frage von pattex zum Thema LAN, WAN, Wireless ...

Windows Server
Benutzer lässt sich nur an einem Clientcomputer anmelden (11)

Frage von Ammann zum Thema Windows Server ...

Netzwerke
SFP Modul (miniGibic) (10)

Frage von apranet zum Thema Netzwerke ...