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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160001
Url: https://administrator.de/contentid/160001
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
14 Kommentare
Neuester Kommentar
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.
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....
Gruß
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ß
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 =)
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 =)
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
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
Hallo hiyaeurope und willkommen im Forum (ja, auch ich gehöre zur Fraktion der "Begrüßer" )!
Du wolltest es ja so :
Für den Moment wird das Öffnen nur simuliert - wenn Du das "
Anmerkung: Nur oberflächlich getestet.
@t-mo
Wozu?
Grüße
bastla
Du wolltest es ja so :
@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
echo
" aus Zeile 9 entfernst, geht's rund ... Anmerkung: Nur oberflächlich getestet.
@t-mo
call oder start /wait nehmen
Grüße
bastla
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:
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)
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)
@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 ...
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.
Grüße
bastla
Wenn's bei Dir ohenhin noch den Rest der Woche gedauert hätte, reduziert das mein schlechtes Gewissen wegen des etwas überstürzten Postens ...
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.
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 ... [/Edit]Grüße
bastla
[OT] @Skyemugen
Grüße
bastla
[/OT]
nebenbei TV gucken verdummt, hehe
Wenn's wenigstens nicht 9live ist ... Grüße
bastla
[/OT]
[OT]
retour
@t-mo
>> call oder start /wait nehmen
Wozu?
>> call oder start /wait nehmen
Wozu?
- Weil im nachhinein bestimmt gesucht wird
Wenn's wenigstens nicht 9live ist ...
- Nein - die deodorierten Hausfrauen mit der ehemalig am meisten gegoogelten Brünetten, die mal dem Clark seinen Kent poliert hat
Grüße
bastla
[/OT]
bastla
[/OT]
retour
Aloha,
ist gerade Werbung, dachte vielleicht gefällt dir die Möglichkeit in einem Durchgang durchzuarbeiten per
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é
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é
@Skyemugen
Vorschlag: Um dem Verschieben ohne vorhergehendes Bearbeiten vorzubeugen, könntest Du noch vor Zeile 33 eine Abfrage der Art
einbauen und vor Zeile 39 mit
die Voraussetzung dafür schaffen ...
Ein "
Grüße
bastla
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
set "Ab="
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
@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é
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é