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, 3538 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
Batch & Shell

txt File mit Batch ab bestimmer Zeilen Anzahl in Zwei .txt Files splitten

gelöst Frage von FaysaxBatch & Shell4 Kommentare

Hallo miteinander, bisher bin ich über Google leider nicht fündig geworden aber vielleicht hilft mir hier jemand. Ich möchte ...

Windows Tools

Bestimmte Anzahl an Dateien aus einem Verzeichnis in ein anderes verschieben

gelöst Frage von wernerzWindows Tools5 Kommentare

Hi, ich sitze jetzt hier schon seit Stunden und versuche mit allen möglichen Befehlen es selbst hin zu bekommen, ...

VB for Applications

VBS oder Batch um eine Datei in Unterordner zu verschieben

Frage von MrRoyalVB for Applications1 Kommentar

Hallo zusammen, ich bin neu hier und kenne mich leider im Bereich VBS und Batch nicht so gut aus. ...

Batch & Shell

Per Batch Dateien aus Unterordner verschieben

gelöst Frage von ministaBatch & Shell10 Kommentare

Hallo Zusammen Ich habe folgende Struktur: Ich möchte nun dass alle Dateien aus dem Ordner B und deren Subordner ...

Neue Wissensbeiträge
Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 1 StundeSicherheits-Tools

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 14 StundenServer-Hardware3 Kommentare

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Windows 10

Kumuative Updates für .NET Framework kommen für Windows 10 V1809

Information von kgborn vor 19 StundenWindows 10

Microsoft hat das Ganze im Beitrag Announcing Cumulative Updates for .NET Framework for Windows 10 October 2018 Update vorgestellt. ...

Sicherheit
Neue IT-Administrator Ausgabe - Endpoint Security
Information von Frank vor 20 StundenSicherheit

Die Endgeräte in Unternehmen stellen das wohl größte Einfallstor für Angreifer dar. Ein geöffneter, infizierter E-Mail-Anhang oder der Besuch ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V38 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

Windows Server
Mit der alten Domäneprofil anmelden ohne Server
gelöst Frage von SyosseWindows Server31 Kommentare

Hallo Jungs Folgendes Szenario: Ich habe bei einem sehr kleinen Unternehmen (2Personen) den Server migriert, soweit hat alles geklappt. ...

Windows Server
Kann DNS-Einträge nicht finden
gelöst Frage von BPeterWindows Server19 Kommentare

Hallo, wenn ich folgenden Befehl absetze, bekomme ich eine Liste zurück mit allen Einträgen der DNS-Zone. Wenn ich aber ...

Windows Server
WS 2016 Essentials - als Hyper-V Host
gelöst Frage von lupoloWindows Server13 Kommentare

Servus, ich würde gerne für 6 Clients von einer Workgroup in eine Domäne aufnehmen. Überlegung hierbei wäre ein Windows ...