Top-Themen

Aktuelle Themen (A bis Z)

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

gelöst Umbenennen von TXT dateien mit größe x oder größer per Batch

Mitglied: Paximperia

Paximperia (Level 1) - Jetzt verbinden

20.05.2008, aktualisiert 21.05.2008, 6813 Aufrufe, 4 Kommentare

Ich möchte bestimmte TXT Dateien nach Dateigröße filtern und nur die,welche der göße x oder größer x sind umbenennen.

Meine Testshell sieht wie folgt aus.Nur mache ich irgendwie einen Denkfehler da bei mir immer alle txt Dateien (also auch die welche kleiner x sind ) umbenannt werden.
Würde mich über denkhilfe freuen
01.
rem pipe Datum Uhrzeit
02.
 
03.
date /t >> c:\umbenennen\copy.log
04.
time /t >> c:\umbenennen\copy.log
05.
 
06.
rem abfrage Dateigröße
07.
 
08.
for %%F in (C:\umbenennen\*log*.txt) do set groesse=%%~zF  
09.
echo prüfen >> c:\umbenennen\copy.log
10.
if %groesse% geq 1024 goto start  
11.
echo sprung start >> c:\umbenennen\copy.log
12.
if %groesse% lss 1024 goto nde   
13.
echo sprung ende  >> c:\umbenennen\copy.log
14.
 
15.
rem ENDE
16.
 
17.
:nde
18.
echo keine Datei mit grösse x vorhanden >> c:\umbenennen\copy.log
19.
exit
20.
 
21.
 
22.
rem zähler setzen !!
23.
:start
24.
echo dateien umbenannt >> c:\umbenennen\copy.log
25.
SET Zaehler=0
26.
SET Pfad=c:\umbenennen\*log.old*
27.
 
28.
rem umbenennung der dateein *.log.old*
29.
 
30.
:umbenennen
31.
rem cd %Pfad%\umbenennen
32.
ren *log*.txt *log*.old%Zaehler% 
33.
goto Ums 
34.
 
35.
:ende
36.
 
37.
rem zähler einen hochsätzen falls *log.oldx schon vorhanden
38.
:ums
39.
set /a Zaehler+=1 >> c:\umbenennen\copy.log 
40.
ren *log*.txt *log*.old*%Zaehler% 
41.
IF EXIST %Pfad%%Zaehler% goto ums 
42.
echo erfolgreich >> c:\umbenennen\copy.log
43.
 
44.
:ende

Mfg

Stephan


[Edit Biber] Code in <code>-Tags gesetzt [/Edit]
Mitglied: BigWumpus
20.05.2008 um 16:22 Uhr
PocketD von Pocketware war so ein DOS-Tool, das alles konnte.
Leider hat es wohl Probleme mit langen Dateinamen.

In 4DOS konnte man sowas auch leicht programmieren, weil es sehr starke Befehle dafür gab.
Bitte warten ..
Mitglied: Biber
20.05.2008 um 17:23 Uhr
Moin Paxi,

im Moment läufst du zwar mit der FOR-Anweisung über alle Dateien mit einer Schleife und prüfst/SETzt je Datei die %groesse%....

Aber alles andere ist NACH der (gedanklichen) FOR-Schleife und findet gemäß diesen Regeln statt:
  • Wenn zufällig bei der letzten Datei in der Liste herauskommt "größer gleich x", dann werden halt danach alle Dateien umbenannt.
  • Wenn zufällig bei der letzten Datei in der Liste herauskommt " kleiner x", dann wird danach keine einzige Datei umbenannt.

Außerdem solltest Du eher mit "Call :subblock" statt mit "goto subblock" arbeiten, da Du dann paramter 8z.B. den dateinamen übergeben kannst.
Ändere die FOR-Anweisung so ab:
01.
...
02.
 
03.
for %%F in (C:\umbenennen\*log*.txt) do If %%~zF geq 1024 call :RenameFile "%%F"
04.
goto :eof
05.
 
06.
...
07.
:RenameFile parameter1 ist der Dateiname
08.
... [Zählermimik.... umbenamsen....]
09.
...
10.
:: back to caller mit goto :eof
11.
goto :eof  
Grüße
Biber
Bitte warten ..
Mitglied: bastla
20.05.2008 um 17:32 Uhr
Hallo Paximperia und willkommen im Forum!

Dein Denkfehler bezieht sich zunächst auf die Funktionsweise der "for"-Schleife - Du überprüfst eigentlich nur die letzte Datei der gesamten Liste, da alle folgenden Befehle erst ausgeführt werden, wenn alle Dateien in der "for"-Schleife "durch" sind. Die Lösung ist das Verzweigen in ein Unterprogramm (siehe unten).

Weiters werden durch die Angabe von "*log*.txt" immer alle Textdateien mit dem Namensbestandteil "log" erfasst - um nur einzelnen Dateien einen neuen Namen zu geben, musst Du diese gezielt ansprechen; im Beispiel unten kommt jede Datei aus der Schleife als %1 im Unterprogramm an.

Leichter les- und vor allem wartbar wird ein Batch durch die Verwendung von Variablen - diese kannst Du übersichtlich am Anfang mit Werten füllen.

Unter Berücksichtigung dieser Überlegungen könnte Dein Batch etwa so aussehen (wobei natürlich Bibers Schreibweise oben kompakter ist):
01.
@echo off & setlocal
02.
set "log=c:\umbenennen\copy.log"
03.
set "Pfad=c:\umbenennen\*log*.txt"
04.
set "old=.old"
05.
set "gr=1024"
06.
 
07.
if exist "%log%" del "%log%"
08.
 
09.
rem pipe Datum Uhrzeit
10.
date /t >>"%log%"
11.
time /t >>"%log%"
12.
 
13.
rem Zähler setzen !!
14.
set Zaehler=0
15.
 
16.
rem Alle Dateien einzeln durchgehen
17.
for %%F in (%Pfad%) do call :Verarbeiten "%%F"
18.
 
19.
if %Zaehler% gtr 0 (
20.
	echo %Zaehler% dateien umbenannt >> "%log%"
21.
) else (
22.
	echo keine Datei mit mindestens %gr% Bytes vorhanden >> "%log%"
23.
)
24.
goto :eof
25.
 
26.
:Verarbeiten
27.
rem Die Datei kommt als %1 an
28.
set groesse=%~z1 
29.
echo prüfen >> "%log%"
30.
if %groesse% lss %gr% echo %1 zu klein - sprung ende >> "%log%" & goto :eof
31.
 
32.
:Hochzaehlen
33.
set /a Zaehler+=1
34.
if exist "%~1%old%%Zaehler%" goto :Hochzaehlen
35.
echo Naechste Nummer: %Zaehler% >> "%log%"
36.
 
37.
:Umbenennen
38.
ren %1 "%~nx1%old%%Zaehler%"
39.
echo erfolgreich: %1 -^> "%~nx1%old%%Zaehler%" >> "%log%"
40.
goto :eof
Die Zählung der umbenannten Dateien stimmt nur beim ersten Mal (wenn sich noch keine umbenannten Dateien im Ordner befinden), ansonsten müsstest Du eine zusätzliche Zählvariable verwenden. Die Schreibweise mit ".old#" würde ich zwar anders gestalten, aber wenn's für Dich passt ...

Grüße
bastla
Bitte warten ..
Mitglied: Paximperia
21.05.2008 um 08:07 Uhr
Guten morgen

Vielen dank für Eure Antworten

Ich habe die Variante von bastla genommen und die Zählung angepasst.Damit habe ich eine gute Lösung.
Ich werde aber die Variante von Biber auch noch probieren (zum üben)

@ BigWumpus
Ich verwende lieber eine eigen Batch als irgendein Prog,aber trotzdem danke.

Mfg

Stephan
Bitte warten ..
Ähnliche Inhalte
Administrator.de Feedback
Muss Werbung so gross platziert werden?
gelöst Frage von BassFishFoxAdministrator.de Feedback4 Kommentare

Hallo Frank Das Siemens gross ist, ist ja bekannt. Aber fast die Haelfte eines Full-HD-Bildschirmes in der Hoehe Werbung ...

Entwicklung

Batch oder Powershell für .txt-Datei

gelöst Frage von freshman2017Entwicklung5 Kommentare

Hallo liebe Gemeinde, ich habe eine .txt-Datei, die aus einer Artikelnummer und einem Bildname bestehen soll. Ausgangsdatei (export.txt) ist ...

Windows 7

BATCH: Alter einer TXT-Datei bestimmen

gelöst Frage von ahstaxWindows 75 Kommentare

Hallo, wie bekomme ich mit einer DOS-Batch das Alter einer TXT-Datei bestimmt und lassen dann, bspw bei Alter >16h, ...

Batch & Shell

txt Listen Auswerten per Batch-Datei

gelöst Frage von Ivowie97Batch & Shell9 Kommentare

Hallo Zusammen Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte. In der ...

Neue Wissensbeiträge
iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 8 StundeniOS

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 2 TagenOff Topic1 Kommentar

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 2 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Sicherheit

MikroTik: Sicherheitslücke wird ausgenutzt obwohl ein Update seit langem verfügbar ist

Information von sabines vor 2 TagenSicherheit

Obwohl ein Update, dass die nun massenhaft ausgenutzte Lücke schließt, seit langem (März 2018) verfügbar ist, wird es offensichtlich ...

Heiß diskutierte Inhalte
Exchange Server
Exchange Server 2010: Keine Eingehenden E-MAils
Frage von gabeBUExchange Server15 Kommentare

Hallo Zusammen Ich habe das kurzen auf dem Exchange 2010 Server das Problem, dass ich keine externen E-Mails mehr ...

Rechtliche Fragen
Systemhaus auf Abwegen
Frage von rocco61Rechtliche Fragen13 Kommentare

Hallo zusammen, bin derzeit ratlos bei dem folgenden Scenario: In einen Seniorenheim wurde beschlossen, die IT an eine andere ...

Router & Routing
MikroTik - Routing, Bridging, Switching
gelöst Frage von Alex29Router & Routing9 Kommentare

Hallo in die Runde, als Hobby-Admin würde ich bitte mal wieder Eure Hilfe benötigen. Seit der Umstellung auf RouterOS ...

Outlook & Mail
Kalendersync mit Android und Outlook
Frage von Stefan007Outlook & Mail8 Kommentare

Hi Leute, kennt jemand eine Möglichkeit um Termine zwischen installiertem Outlook auf dem PC und dem Kalender auf einem ...