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 Bestimme Anzahl an htm Files in Unterordner verschieben.

Mitglied: GnozoNAV

GnozoNAV (Level 1) - Jetzt verbinden

24.08.2011, aktualisiert 18.10.2012, 3576 Aufrufe, 6 Kommentare

Ich beabsichtife eine Verschiebung von 63000 htm Files in Unterordner a la 600 Files.

Hallo,

Ich habe ein Problem und möchte dies durch einen Batch lösen. Wäre super, wenn sich jemand Zeit nimmt um mir dort auszuhelfen.

Ich habe um die 63000 .htm Files in dem Ordner "C:\MyHTMLHelp\Project\addin_a\Source" und möchte nun alle Dateien in Unterordner aufteilen. Jeder ordner sollte 600 .htm Files beinhalten. Bis auf den letzten, da ist es logisch, dass es nicht genau 600 sein können. Ist aber kein Problem.

Also:
600 htm Files in den Ordner "C:\MyHTMLHelp\Project\addin_a\Source\Ordner1"
600 htm Files in den Ordner "C:\MyHTMLHelp\Project\addin_a\Source\Ordner2"
...
usw.

Es muss aber beachtet werden, dass die Unterordner noch nicht existieren. Also muss ein neuer Ordner quasi in dem Verzeichnis "C:\MyHTMLHelp\Project\addin_a\Source" angelegt werden und dort dann die 600 Files eingeschoben werden.

Wäre super, wenn sich da jemand kurz zeit nehmen könnte. Bis jetzt hab ich es nur geschafft alle Dateien in einen Ordner zu schieben. Das mit der abzählung das nach 600 schluss ist, hab ich nicht hinbekommen. Auch das erstellen eines neuen Ordners ist mir noch nicht so ganz klar.

Also vielleicht hat ja jemand die Zeit und bastelt so einen kleinen Batch kurz und kann mir noch erklären, was er pro Code zeile genau macht, denn einfach nur die .bat ausführen hat ja nun auch keinen großen Lerneffekt.

Ich hab mir diesen Thread schon durchgelsen aber kann mangels fehlender Erfahrung im Bereich Batch keine Schlüsse draus ziehen.
https://www.administrator.de/index.php?content=155260

Mit freundlichen Grüßen

Lukas Patz
Mitglied: pieh-ejdsch
24.08.2011 um 13:31 Uhr
moin Lukas,

magst Du etwas fertiges oder etwas zum selbst Probieren
Begrenzte Anzahl von Dateien verschieben

hier kannst Du noch etwas anpassen?

Bei Fragen einfach diese stellen.

Gruß Phil
Bitte warten ..
Mitglied: GnozoNAV
24.08.2011 um 13:46 Uhr
Also ich hab mir deinen Link jetzt mal angeschaut und mit den Code genommen und so angepasst, wie ich denke, dass es richtig ist :D

01.
::----snipp----Dateien-Blockweise-verschieben
02.
@echo Off
03.
set Woher="C:\MyHTMLHelp\Project\addin_a\Source"
04.
set "C:\MyHTMLHelp\Project\addin_a\Source\Ordner1"
05.
set "Dateityp=*.htm"
06.

07.
pushD %Woher%
08.

09.
del "%temp%\tmp" 2>nul
10.
if exist "%temp%\tmp2" (move "%temp%\tmp2" "%temp%\tmp">nul ) else dir /b %Dateityp%>"%temp%\tmp"
11.

12.
call :move 600
13.
popD
14.
goto :eof
15.

16.

17.
:move
18.
set "Nr=1"
19.
for /f "usebackq delims=" %%i in ("%temp%\tmp") do (@ECHO move "%%i" "%Dorthin%\"
20.
	setlocal enabledelayedexpansion
21.
	if !Nr! == %1 endlocal & set "Nr=1"&more +%1 "%temp%\tmp">"%temp%\tmp2"&goto :eof
22.
	endlocal & set /a Nr+=1
23.
)
24.
::----snapp----Dateien-Blockweise-verschieben
Also sofern ich das jetzt richtig verstehe, würde er 600 htm Files in den Ordner1 verschieben? Muss ich dann jeweils einen neuen Ordner anlegen wie z.b. Ordner2 und die .bat dann ergänzen und wieder ausführen, bis ich keine htm Files mehr habe oder erstellt er automatisch einen neuen Ordner?

Sorry aber mit Batch kenn ich mich gar nicht aus, bin Navision Entwickler.

Zitat von pieh-ejdsch:
magst Du etwas fertiges oder etwas zum selbst Probieren

Aus zeitgründen wohl eher etwas fertiges :/

Beste Grüße

Lukas
Bitte warten ..
Mitglied: Skyemugen
24.08.2011 um 14:34 Uhr
Aloha,

abgesehen davon, dass bei set "Dorthin=C:\..." das Dorthin bei dir verloren ging sollte die Wortgruppe Dateien-Blockweise-verschieben doch nahe legen, dass der Grundcode an sich auch nur das macht, alles von A nach B und nichts mit C, D etc. (geht auch aus dem alten Thread hervor).

move bewegt nur, erstellt aber nichts, dass heißt:
  • Entweder du legst bereits weitere Ordner an und änderst das pro Durchgang in der Batch
oder
  • Man lässt per Batch (von vornherein am Besten) die Verzeichnisse anlegen (mit Nummerierung und nur sofern notwendig und der vorangehende bereits existiert und per counter) und lässt ihn solange durchjagen, bis nichts mehr zum Verschieben vorhanden ist

Und weil ich heute meinen faulen Tag habe gibt's auch überlasse ich die weitere Abarbeitung meinen Batch-Kollegen

greetz André

edit @bastla, soso Da hätte ich zumindest eine Suchaktion starten müssen aber die Faulheit heute *lächz - so warm*
Bitte warten ..
Mitglied: bastla
24.08.2011, aktualisiert 18.10.2012
@skye
Faul? Kann ich auch: Batch um Dateien nach Anzahl in Ordner abzulegen

Grüße
bastla

[Edit] @skye
Da hätte ich zumindest eine Suchaktion starten müssen
Das ist der Vorteil, wenn man(n) dabei war ...
[/Edit]
Bitte warten ..
Mitglied: Friemler
24.08.2011 um 15:30 Uhr
Hallo GnozoNAV,

teste mal folgendes:
01.
@echo off
02.

03.
setlocal
04.

05.

06.
set "SrcDir=C:\MyHTMLHelp\Project\addin_a\Source"
07.
set "FileType=htm"
08.
set "nFiles=600"
09.

10.

11.
set /a "Cntr=1"
12.

13.
:Loop
14.
  set "FilesAvailable="
15.

16.
  for /f "tokens=1* delims=:" %%a in ('dir /b /a:-d /o:n "%SrcDir%\*.%FileType%" 2^>NUL ^| findstr /n "^"') do (
17.
    if %%a leq %nFiles% (
18.
      if %%a equ 1 (
19.
        md "%SrcDir%\Ordner%Cntr%"
20.
      )
21.

22.
      move "%SrcDir%\%%b" "%SrcDir%\Ordner%Cntr%\%%b"
23.
      set "FilesAvailable=1"
24.
    )
25.
  )
26.

27.
  set /a "Cntr+=1"
28.
if defined FilesAvailable goto :Loop
Im Kopf der FOR-Schleife ließt der DIR-Befehl alle HTM-Dateien im Quellverzeichnis ein. Seine (wegen /o:n alphabetisch sortierte) Ausgabe (wegen 2^>NUL aber nicht die Fehlermeldungen) wird über eine Pipe an FINDSTR weitergereicht, was wegen dem Parameter "^" (steht für Zeilenanfang) alle Zeilen findet und wegen /n Nummern vor alle Zeilen schreibt.

Die daraus resultierenden Ausgabezeilen werden von der FOR-Schleife in Tokens zerlegt (siehe mein Tutorial zur FOR-Schleife). Das erste Token ist wegen delims=: die Zeilennummer (enthalten in der Laufvariablen %%a), das zweite Token ist wegen dem Stern in tokens=1* der Rest der Zeile, also der Dateiname (enthalten in der automatisch erzeugten Laufvariablen %%b).

In der Schleife wird geprüft, ob die Zeilennummer kleiner oder gleich 600 ist. Wenn ja wird geprüft ob sie gleich 1 ist. Wenn ja, wird ein neues Verzeichnis angelegt. Dazu wird die Zählervariable Cntr benutzt. Danach wird die gerade aktuelle Datei in das neu erstellte Verzeichnis verschoben und die Variable FilesAvailable auf 1 gesetzt.

Wenn die geforderte Anzahl Dateien verschoben wurde (wegen Zeile 8 also 600 Stück), stimmt die Bedingung in Zeile 17 nicht mehr und alle restlichen Dateien werden überlesen.

Nach dem Ende der FOR-Schleife wird in Zeile 28 geprüft, ob die Variable FilesAvailable existiert. Das ist nur der Fall, wenn zuvor die FOR-Schleife durchlaufen wurde, da die Variable in Zeile 14 gelöscht wird. Falls die Variable existiert, wird zum Label :Loop gesprungen und der Ablauf beginnt von neuem.

Diesmal ist die Dateiliste, die von DIR geliefert wird, um 600 Dateien kürzer.

Das wird solange wiederholt, bis DIR (wegen Zeile 7) keine HTM-Dateien mehr findet, dann wird die FOR-Schleife nicht durchlaufen und FilesAvailable existiert in Zeile 28 nicht, was zum Beenden des Scripts führt.

Gruß
Friemler
Bitte warten ..
Mitglied: GnozoNAV
24.08.2011 um 16:09 Uhr
Der Code von Friemler ist ja mal sowas von geil
Er hat auf jedenfall genauso funktioniert, wie ich mir das vorgestellt habe und ging sogar richtig fix.

Ich möchte mich nocheinmal herzlich bei allen Leuten bedanken, die mir geholfen haben und besonders bei Friemler, der sich die Zeit genommen hat und extra einen Batch geschrieben hat und eine Erklärung dazu. DANKE

Der Batch ist ja auch zemlich nützlich allgemein um mal einen Ordner aufzuräumen.

Beste Grüße

Lukas
Bitte warten ..
Ähnliche Inhalte
Basic

Regex Anzahl Character Nicht Anzahl Bytes

gelöst Frage von PeronasBasic6 Kommentare

Guten Morgen zusammen, und zwar habe ich eine Frage bzgl. RegEx/RegExp. Ich habe einen regulären Ausdruck der wie folgt ...

Zusammenarbeit

Minimale Anzahl Admins?

Frage von 1410640014Zusammenarbeit6 Kommentare

Hallo, Frage: mir kommen immer wieder KMUs unter, die so 50-250 Angestellte, aber entweder gar keinen Admin, also nur ...

Netzwerke

Anzahl der Subnetze

gelöst Frage von CrownClownNetzwerke11 Kommentare

Hallo, Wie kann ich verstehen, wie viele Subnetze ich habe, wenn mein Subnetmaske 255.255.255.0 und mein ip z.B. 192.243.14.63 ...

Windows Server

Anzahl von Gruppenrichtlinien

Frage von BulliiWindows Server2 Kommentare

Hallo, mich interessiert brennend, wieviele Gruppenrichtlinienobjekte, ihr so bei euch habt? Ich versuchte eigentlich immer die Gruppenrichtlinienobjekte soweit wie ...

Neue Wissensbeiträge
Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 9 StundenInternet3 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Router & Routing

Zyxel VMG 1312 B30A - Firmwareupdate nur im "privaten" Firefox Modus möglich

Tipp von the-buccaneer vor 23 StundenRouter & Routing2 Kommentare

Hatte hier ein Zyxel 1312 das ums verrecken kein Firmwareupdate durchführen wollte. Datei ist auswählbar, dann kommt der Fortschrittskreisel ...

Windows 7

Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019

Information von kgborn vor 2 TagenWindows 75 Kommentare

Kleine Info für die Admins der oben genannten Maschinen. Ab Juli 2019 werden Updates von Microsoft nur noch mit ...

Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Information von ChriBo vor 4 TagenFirewall2 Kommentare

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Heiß diskutierte Inhalte
Hardware
IT-Werkzeugkoffer bis 50,- EUR
gelöst Frage von departure69Hardware53 Kommentare

Hallo. Ich bin als IT-Systembetreuer einer Gemeinde zusätzlich auch der IT-Systembetreuer einer Grund- und Hauptschule. Dort muß ich jedoch ...

Netzwerke
Verteilung von Programmdaten außerhalb des internen Netzwerkes
Frage von mertaufmbergNetzwerke27 Kommentare

Guten Morgen liebe Administratoren, ich versuche zurzeit eine möglichst sichere und einfache Lösung zu suchen, um ein Programmverzeichnis über ...

Datenbanken
PHP Fatal error: Uncaught Error: Call to undefined function oci connect
Frage von PlanitecXDatenbanken19 Kommentare

Hallo Zusammen, ich sitze seit Tagen am Problem das ich keine PHP Anwendung mit Anbindung zu Oracle zum laufen ...

Hardware
PC im Selbstbau, Workstation, mittelklasse Gaming
gelöst Frage von MrRobot1997Hardware19 Kommentare

Hallöchen Leute, ich bin seit einigen Jahren leider nicht mehr wirklich im Bild, wenn es um die Hardware und ...