hiyaeurope
Goto Top

Die ersten 1.000 Dateien eines Ordners öffnen

Also, ich habe erst vor 2 Tagen Batch-Dateien entdeckt, bin also komplett neu.

Ich habe hier gesehen, wie ich alle Dateien eines Ordners öffnen kann:

for %%i in ("C:\test\*.html") do @start "" "C:\Programme\Notepad++\notepad++.exe" "%%i"

Das funktioniert auch.
Problem ist, in dem Ordner sind mehr als 50.000 Dateien und Notepad kann nur so um die 1.000 gleichzeitig öffnen. Wie kann ich nun nur 1.000 Dateien öffnen lassen?
Die Sortierung spielt keine Rolle, ich würde die Dateien dann nach dem Bearbeiten einfach verschieben.

Beste Grüße
Hiya

Content-ID: 160001

Url: https://administrator.de/contentid/160001

Ausgedruckt am: 25.11.2024 um 03:11 Uhr

60730
60730 02.02.2011 um 19:47:15 Uhr
Goto Top
moin,

das könnte etwas länger dauern, also erstmal nachsehen, ob ein B aus dem Batch Bereich online ist...
(Obwohl hier mittlerweile viele Wissende ohne B Nick gibt)

Obwohl - schau einfach in die Anleitung zum Thema For Schleife rein.

  • Du brauchst einen Zähler innerhalb einer Schleife - den kannst du entweder via call :Prozessline oder via delayedexpansion realisieren.
Set /? und da /a ansehen
  • Und du willst prüfen, ob der Zähler 999 erreicht hat
If /? und da equ oder GTR
  • Das mußt du in der schleife zwischen do und start einbauen.

Fertig

Alle "Fremdwörter" sind geeignete Wörter für die Suchfunktion, da findest du massig Beispiele.


btw: Weil du neu bist - ein Hallo wird hier gerne gesehen und manchmal gibts auch verbale rückrufaktionen in den Grußlosen Wald
Und wenn du wiisen möchtest - wie ich das lösen würde:

Obwohl ich dauernd xx Fenster offen hab - 999 Notepadfenster sind mir 997 zuviel....
call oder start /wait nehmen

Gruß
Skyemugen
Skyemugen 02.02.2011 um 19:56:46 Uhr
Goto Top
Aloha,

bah, mir raucht der Kopf! Nicht nur, wenn ich das das aufpoppen der Dateien denke aber auch beim batch selbst - das ist wirklich mal eine Aufgabe der anderen Art, hatten wir so hier auch noch nicht, Junge, Junge.

Ich zieh mich erstmal wieder zurück, Wäsche aufhängen und grübeln ...

Ich werde am Ende eh nicht die Lösung hier posten können aber mich interessiert mal diese Herausforderung

greetz André

edit: Du hast sicherlich auch hier gesehen, dass wir normalerweise die Leute begrüßen =)
90776
90776 02.02.2011 um 20:12:08 Uhr
Goto Top
hallo

ich glaube zwar dass das machbar ist, aber vermutlich wird der PC abstürzen wenn fast gleichzeitig 1000 dateien geöffnet werden

Grüsse
Switcher
bastla
bastla 02.02.2011 um 20:27:18 Uhr
Goto Top
Hallo hiyaeurope und willkommen im Forum (ja, auch ich gehöre zur Fraktion der "Begrüßer" face-wink)!

Du wolltest es ja so face-wink:
@echo off & setlocal
set "Ordner=C:\test"  
set "Dateien=*.html"  
set /a Anzahl=1000
pushd "%Ordner%"  
for /f %%i in ('dir /a-d "%Dateien%"^|findstr "Datei(en)"') do set /a Gesamt=%%i  
set /a Ab=Gesamt-Anzahl
if %Ab% lss 0 set /a Ab=0
for /f "delims=" %%i in ('dir /b /a-d /o-n "%Dateien%"^|more +%Ab%') do echo start "" "C:\Programme\Notepad++\notepad++.exe" "%%i"  
popd
pause
Für den Moment wird das Öffnen nur simuliert - wenn Du das "echo" aus Zeile 9 entfernst, geht's rund ... face-wink

Anmerkung: Nur oberflächlich getestet.
@t-mo
call oder start /wait nehmen
Wozu?

Grüße
bastla
Skyemugen
Skyemugen 02.02.2011 um 20:38:03 Uhr
Goto Top
Aloha bastla,

tralalala ich merk schon, ich hatte gute Ansätze aber auf die Lösung wäre ich die ganze Woche nicht gekommen ... auf die Idee mit Dateien im findstr und more in der zweiten Schleife wäre ich nicht gekommen *pfeif*

Wie würde Mr. Spock jetzt sagen:
Faszinierend, Captain

greetz André

edit aber wie öffnet er jetzt die nächsten tausend und wieder die nächsten ohne die bereits bearbeiteten erneut zu öffnen, das ist mir noch unklar (ja gut, er gab ja an nur die ersten 1000 zu wollen ... dann muss er wohl nach dem Bearbeiten die ersten tausend verschieben bzw. die letzten(?) - per batch natürlich ^.^ und dann wieder von vorne anfangen)
bastla
bastla 02.02.2011 um 20:44:07 Uhr
Goto Top
@Skyemugen
Wenn's bei Dir ohenhin noch den Rest der Woche gedauert hätte, reduziert das mein schlechtes Gewissen wegen des etwas überstürzten Postens ... face-wink

Allerdings muss ich gestehen, dass es sich bei meinem Ansatz um eine halbe Mogelpackung handelt: geöffnet werden eigentlich die letzten 1000 Dateien - aber dafür sortiere ich sie auch umgekehrt. face-wink

aber wie öffnet er jetzt die nächsten tausend und wieder die nächsten ohne die bereits bearbeiteten erneut zu öffnen, das ist mir noch unklar
Wenn ich einen Batch zum Öffnen habe, sollte doch auch einer zum Verschieben zu machen sein ... [Edit] ... und gleich nochmal zu früh gepostet ... face-wink [/Edit]

Grüße
bastla
Skyemugen
Skyemugen 02.02.2011 um 20:47:20 Uhr
Goto Top
Aloha bastla,

ja das fiel mir auch nach dem Editieren ein ^.^ - nebenbei TV gucken verdummt, hehe

greetz André
bastla
bastla 02.02.2011 um 20:50:56 Uhr
Goto Top
[OT] @Skyemugen
nebenbei TV gucken verdummt, hehe
Wenn's wenigstens nicht 9live ist ... face-devilish

Grüße
bastla
[/OT]
hiyaeurope
hiyaeurope 02.02.2011 um 20:55:34 Uhr
Goto Top
Wow, das war flott.
Herzlichen Dank, da wäre ich wohl nie drauf gekommen.


@alle besorgten Leser:
Notepad öffnet in Reitern, da sind 1.000 Dateien kein Problem. Dann ein Makro mehrfach ausgeführt und innerhalb von 2 Minuten sind 1.000 Dateien geöffnet, bearbeitet, gespeichert, geschlossen und alles ist schön. *g*
Und nebenbei noch in ner Datenbank geschrieben, Dateien verschoben, Outlook auf und Firefox, ja mein Rechner ist schon ein Schätzchen.

Nochmals herzlichen Dank!!!!
60730
60730 02.02.2011, aktualisiert am 18.10.2012 um 18:45:42 Uhr
Goto Top
Zitat von @bastla:
[OT]
@t-mo
>> call oder start /wait nehmen
Wozu?
  • Weil im nachhinein bestimmt gesucht wird face-wink

Wenn's wenigstens nicht 9live ist ... face-devilish
  • Nein - die deodorierten Hausfrauen mit der ehemalig am meisten gegoogelten Brünetten, die mal dem Clark seinen Kent poliert hat face-wink
Grüße
bastla
[/OT]

retour
Skyemugen
Skyemugen 02.02.2011 um 21:26:50 Uhr
Goto Top
Aloha,

ist gerade Werbung, dachte vielleicht gefällt dir die Möglichkeit in einem Durchgang durchzuarbeiten per
@echo off & setlocal
set "Ordner=C:\test"  
set "Dateien=*.html"  
set "Umlagerung=D:\test"  
set /a Anzahl=1000

:Abfrage
echo Bitte waehle deine Option:
echo 1 = Durchlauf starten
echo 2 = Die eben genutzen Dateien verschieben (bedingt 1)
echo any key = Skript beenden
set /p Wahl=Bitte Zahl eingeben:
if /i "%Wahl%"=="1" (  
goto Durchlauf
) ELSE (
if /i "%Wahl%"=="2" (  
goto verschieben
) ELSE (
goto :eof
)
)

:Durchlauf
pushd "%Ordner%"  
for /f %%i in ('dir /a-d "%Dateien%"^|findstr "Datei(en)"') do set /a Gesamt=%%i  
set /a Ab=Gesamt-Anzahl
if %Ab% lss 0 set /a Ab=0
for /f "delims=" %%i in ('dir /b /a-d /o-n "%Dateien%"^|more +%Ab%') do start "" "C:\Programme\Notepad++\notepad++.exe" "%%i"  
popd
goto Abfrage

:verschieben
if not defined Ab echo Keine unbearbeiteten Dateien vorhanden! & pause & goto :Abfrage
pushd "%Ordner%"  
for /f "delims=" %%i in ('dir /b /a-d /o-n "%Dateien%"^|more +%Ab%') do move "%%i" %Umlagerung% >nul  
popd
echo.
echo Verschieben erfolgreich
echo.
set "Ab="  
goto Abfrage

Damit kannst du dann den Durchlauf starten, die zuerst geöffneten Dateien danach verschieben, den Durchlauf erneut starten etc. etc. oder das Programm beenden. =)

edit: bastlas sinnvolle Ergänzung hinzugefügt (woran er so alles denkt ...) um versehentliches Verschieben unbearbeiteter Daten zu vermeiden

greetz André
bastla
bastla 02.02.2011 um 21:35:39 Uhr
Goto Top
@Skyemugen
Vorschlag: Um dem Verschieben ohne vorhergehendes Bearbeiten vorzubeugen, könntest Du noch vor Zeile 33 eine Abfrage der Art
if not defined Ab echo Keine unbearbeiteten Dateien vorhanden! & pause & goto :Abfrage
einbauen und vor Zeile 39 mit
set "Ab="
die Voraussetzung dafür schaffen ...
Ein "exit" ohne "/b" ist für mich eigentlich nur ein Ärgernis, da ich grundsätzlich in einer Shell teste, und die ist dann natürlich zu - daher würde ich die Zeile 42 ersatzlos streichen oder gleich die Zeile 19 auf "goto :eof" ändern.

Grüße
bastla
Skyemugen
Skyemugen 02.02.2011 um 21:43:35 Uhr
Goto Top
@bastla

interessante Erweiterung, ich hatte nur das Verschieben beim ersten Versuch getestet und nicht nach einem Durchlauf eventuell zwei Mal verschieben ^.^ zur Not könnte man auch statt 2 ja 7 wählen (die liegen nicht nebeneinander, vertippen ist nicht) :P

hm, wenn ich was zumache, dann soll es auch zu *lach* exit /b hm... vielleicht gewöhn ich's mir mal an ;) (oder auch :eof)

greetz André
hiyaeurope
hiyaeurope 03.02.2011, aktualisiert am 18.10.2012 um 18:45:43 Uhr
Goto Top
@Skyemugen
Hach, wie schöööön. Da träumt man ja von.
Vielen mächtigen Dank.

@bastla: Und auch danke für einen anderen Code, den ich hier von Dir gefunden habe. Zur Info
Habe noch ein "type" eingefügt und jetzt werden die hier bearbeiteten Dateien dann zusammengeführt und in einzelne Ordner verschoben.
Super Klasse, große Hilfe.

Grüße Hiya