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 Dateiliste von Ordner mit Grössenangabe

Mitglied: weierles

weierles (Level 1) - Jetzt verbinden

13.10.2006, aktualisiert 14.10.2006, 7241 Aufrufe, 13 Kommentare

hallo


ich möchte von mehreren Ordnern eine Seite im internet erstellen mit deren Inhalt. Bis jetzt habe ich dies so gelöst dass über den "dir"-Befehl die Dateiliste des Ordners in eine Excel-tabelle kopiert wurde und am Ende der Batch wurde die tabelle geöffnet; ich hab unter "speichern unter HTML" das ganze gespeichert und geschlossen, die batch hat im Hintergrunde gewartet und anschliessend das ganze per FTP hochgeladen.


Nun möchte ich das ganze ausbauen (und vielleicht auch vereinfachen). Ich wollte für jede Datei die Grösse dazu schreiben, für eine einzelne Daatei habe ich dies so gelöst:


for %%F in ("%dateiname%") do set groesse=%%~zF
set /a groessevor=groesse/1000000
set /a groessenach=groessevor*1000000
set /a groessenach=groesse-groessenach
set /a runden=groessenach/1000
set /a nulltest=groessenach/100000
if %nulltest%==0 set null=0
set /a groessenach=groessenach/10000
set /a runden2=groessenach*10
set /a runden=runden-runden2
if %runden% GTR 5 set /a groessenach=groessenach+1
echo Dateiname: %dateiname% %groessevor%,%null%%groessenach% MB




Nun dachte ich mit einer TXT-Datei die über den "dir"-Befehl erstellt wurde könnte ich den Code oben automatisieren damit er die Variable %dateiname% fortlaufend ändert. Nun aber mein Problem:


dir /b /on >liste.txt

for /f "skip=1 tokens=*" %%i in (liste.txt) do @set dateiname=%%i



bringt mir nicht die Zeile die ich bei skip eingebe, sondern immer die Letzte Zeile. Was ist daran falsch?

Da ja keine 0 dort stehen darf baue ich noch ein Header ein.
Mitglied: geTuemII
13.10.2006 um 13:58 Uhr
Du siehst nur die letzte Zeile der Durchläufe, da du deine Datei liste.txt immer überschreibst.

überschreiben: dir /b /on > liste.txt
anhängen: dir /b /on >> liste.txt

[edit] Da habe ich Lötzinn geschrieben, ich ziehe diesen Beitrag zurück. Wer lesen kann... [/edit]

geTuemII
Bitte warten ..
Mitglied: bastla
13.10.2006 um 13:59 Uhr
Hallo weierles!

Ich würde mal sagen, da die For-Schleife alle (bis auf die erste, wegen skip=1) Zeilen der "liste.txt" durchgeht, wird die Variable "dateiname" immer wieder überschrieben, sodass am Schluss einfach der letzte Name drinnen steht.

Als Lösung könntest Du mit einem do call :Bearbeitung %%i ein passendes Unterprogramm aufrufen, wo der übergebene Dateiname dann einfach als %1 verwendet werden kann.

HTH
bastla
Bitte warten ..
Mitglied: Metzger-MCP
13.10.2006 um 14:13 Uhr
Hm ich bin nun ein bissel verwirrt da ich nicht verstehe welches Problem du hast
oder was genau bei dir nicht funktioniert.

Was möchtest du als Endergebnis haben und wo bekommst du die Daten her ?
Ich könnte dir ja dann eine Datei zur verfügung stellen.

MFG Metzger
Bitte warten ..
Mitglied: bastla
13.10.2006 um 14:35 Uhr
Hallo!

Ich nehme an, es ist etwa Folgendes gemeint:

01.
@echo off 
02.
for /f %%i in ('dir /b /on /A-d') do call :Auswertung %%i 
03.
goto Ende 
04.
:Auswertung 
05.
for %%F in ("%1") do set groesse=%%~zF 
06.
set /a groessevor=groesse/1000000 
07.
set /a groessenach=groessevor*1000000 
08.
set /a groessenach=groesse-groessenach 
09.
set /a runden=groessenach/1000 
10.
set /a nulltest=groessenach/100000 
11.
if %nulltest%==0 set null=0 
12.
set /a groessenach=groessenach/10000 
13.
set /a runden2=groessenach*10 
14.
set /a runden=runden-runden2 
15.
if %runden% GTR 5 set /a groessenach=groessenach+1 
16.
echo Dateiname: %1 %groessevor%,%null%%groessenach% MB 
17.
:Ende
HTH
bastla
Bitte warten ..
Mitglied: weierles
13.10.2006 um 14:51 Uhr
Was möchtest du als Endergebnis haben
und wo bekommst du die Daten her ?
Ich könnte dir ja dann eine Datei zur
verfügung stellen.

Ich habe als Daten ein paar Dateien in einem Ordner. Als Ergebnis möchte ich eine HTML Seite mit allen Dateinamen (und Ordner) mit den Dateigrössen (Ordner haben 0MB, ist aber egal).
Ich werde die Batch-Ausgabe in ein Excel schreiben und dies als HTML speichern, automatisch gehts bei mir noch nicht.


Die Lösung von bastla ist perfekt, danke!!
Bitte warten ..
Mitglied: bastla
13.10.2006 um 15:07 Uhr
Hallo weierles!

Leider muss ich Dir widersprechen - die Lösung oben ist nur ein Entwurf, der zB bei Dateien mit Leerzeichen im Namen nicht funktioniert.

Hier die verbesserte Version:

01.
@echo off 
02.
chcp 1252 > nul 
03.
for /f "delims=" %%i in ('dir /b /on /A-d') do call :Auswertung "%%i" 
04.
goto Ende 
05.
:Auswertung 
06.
for %%F in (%1) do set groesse=%%~zF 
07.
set /a groessevor=groesse/1000000 
08.
set /a groessenach=groessevor*1000000 
09.
set /a groessenach=groesse-groessenach 
10.
set /a runden=groessenach/1000 
11.
set /a nulltest=groessenach/100000 
12.
if %nulltest%==0 set null=0 
13.
set /a groessenach=groessenach/10000 
14.
set /a runden2=groessenach*10 
15.
set /a runden=runden-runden2 
16.
if %runden% GTR 5 set /a groessenach=groessenach+1 
17.
echo Dateiname: %~1 %groessevor%,%null%%groessenach% MB 
18.
:Ende
bastla

[Edit] Endgültige Fassung (wie weiter unten angemerkt) erstellt. [/Edit]
Bitte warten ..
Mitglied: weierles
13.10.2006 um 15:15 Uhr
Falls Du mit den Anführungszeichen
leben kannst, ist das eine leicht verbesserte
Version:
Ist ok so. Das einzige unschöne sind die Umlaute äöü. Könnte man ans Ende der batch schreiben er soll z.b. alle Ö in ™ umwandeln?
Bitte warten ..
Mitglied: bastla
13.10.2006 um 15:20 Uhr
Hallo weierles!

Ach so, wegen des Excel-Imports ...

Da müsste als 2. Zeile noch ein chcp 1252 > nul hinein.

HTH
bastla
Bitte warten ..
Mitglied: weierles
13.10.2006 um 15:26 Uhr
Da müsste als 2. Zeile noch ein chcp
1252
hinein.
Hat geklappt. Eine Frage noch: ich möchte an den Schluss der Batch noch was schreiben, wenn ich dies nach dem :Ende ganz am Schluss mache wird es jedes mal aufgerufen, merkt der CALL-Befehl nicht das die :Auswertung beim :Ende beendet ist? Oder soll ich meine letzten Worte vor der :Auswertung hinschreiben?
Bitte warten ..
Mitglied: bastla
13.10.2006 um 15:31 Uhr
Hallo weierles!

Richtig - wenn Du ganz am Ende noch etwas ausgeben willst, muss das nach der Schleife (und vor "goto Ende" ) passieren.

Und wegen der Anführungszeichen (doch noch gefunden): In der echo-Zeile statt " ;%1" "%~1" schreiben (ich editier das Ganze nochmal oben).

HTH
bastla
Bitte warten ..
Mitglied: geTuemII
13.10.2006 um 16:17 Uhr
Mal eine Frage: Warum wollt ihr das erst ins Excel importieren?

01.
::main.bat zur Ordnergroessenauswertung 
02.
 
03.
@echo off 
04.
chcp 1252 > nul 
05.
 
06.
echo ^<html^>^<head^>^<title^>Auswertung Datenmengen^<^/titel^>^<^/head^>^<body^>^<table border="1"^> >>auswertung.html 
07.
echo ^<tr^>^<th^>Dateiname^<^/th^>^<th^>Gr&ouml;&szlig;e vorher^<^/th^>^<th^>Gr&ouml;&szlig;e nachher^<^/th^>^<^/tr^> >>auswertung.html 
08.
 
09.
for /f "delims=" %%i in ('dir /b /on /A-d') do call Auswertung.bat "%%i" 
10.
 
11.
echo ^<^/table^>^<^/body^>^<^/html^> >>auswertung.html
01.
:: auswertung.bat zur Ordnergroessenauswertung 
02.
:: wird von main.bat gestartet 
03.
 
04.
@echo off 
05.
chcp 1252 > nul  
06.
 
07.
for %%F in (%1) do set groesse=%%~zF 
08.
set /a groessevor=groesse/1000000 
09.
set /a groessenach=groessevor*1000000 
10.
set /a groessenach=groesse-groessenach 
11.
set /a runden=groessenach/1000 
12.
set /a nulltest=groessenach/100000 
13.
if %nulltest%==0 set null=0 
14.
set /a groessenach=groessenach/10000 
15.
set /a runden2=groessenach*10 
16.
set /a runden=runden-runden2 
17.
if %runden% GTR 5 set /a groessenach=groessenach+1 
18.
 
19.
echo ^<tr^>^<td^>%1^<^/td^>^<td^>%groessevor% MB^<^/td^>^<td^>%null%%groessenach% MB^<^/td^>^<^/tr^> >>auswertung.html
Gruß, geTuemII
Bitte warten ..
Mitglied: weierles
13.10.2006 um 16:49 Uhr
Mal eine Frage: Warum wollt ihr das erst ins
Excel importieren?
Gute Frage nächste Frage.
Ich hatte keine gute lösung gefunden, nun hab ich eine. Eine Lösung die mit 3 Dateien auskommt (main.bat, auswertung.bat und logindaten.ftp) Vielen Dank!

Zudem kann ich jetzt, da ich ja mehrere Laufwerke habe, diese in der main.bat aufführen:

for /f "delims=" %%i in ('dir /b /on /A-d C:\unterordner\') do call Auswertung.bat "%%i"
for /f "delims=" %%i in ('dir /b /on /A-d D:\unterordner\') do call Auswertung.bat "%%i"
for /f "delims=" %%i in ('dir /b /on /A-d E:\unterordner\') do call Auswertung.bat "%%i"
Bitte warten ..
Mitglied: weierles
14.10.2006 um 16:52 Uhr
Ich hab nun das ganze weiter gebaut. Läuft alles automatisch, ich gebe nur ein ob externe Festplatten dran sind oder nicht.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Lange Dateiliste auf mehrere "kleine" Dateilisten aufteilen

gelöst Frage von tHe-jAyBatch & Shell4 Kommentare

Hallo, für eine weitere Verarbeitung muss ich eine Dateiliste mit knapp 100000 Zeilen in mehrere kleine aufteilen. Die Eingabeliste ...

Windows Server

Größenangabe Serversicherung 2012 R2

Frage von HenereWindows Server4 Kommentare

Hallo Gemeinde, ich hätte da gerne mal wieder ein Problem. Wieso bekomme ich bei der Serversicherung unterschiedliche bzw falsche ...

Microsoft Office

Dateiliste in Excel 2010 wird nur nach Formel löschen aktualisiert

gelöst Frage von dressaMicrosoft Office1 Kommentar

Hallo miteinander. Ich brauche mal einen Tip vom Excel 2010 Formel-Spezialisten :) Ich habe mir in Excel in der ...

VB for Applications

Einzelne Dateien in Dateiliste umbenennen durch neuen Wert (Namen) aus einer Zelle

gelöst Frage von two-ak-twoVB for Applications2 Kommentare

Guten Tag, ich möchte gerne in einer Mappe.xls, die folgendes beinhaltet (Anfang ab Zeile 5): Z5S2 =Name.pdf (der vorhandene ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 21 StundenWindows 104 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...