Über Set einer Variablen mehrere Verzeichnisspfade zuweisen
Hallo,
ich hab folgendes Problem. Ich habe ein kleine Batch datei geschrieben, die alle x min einen Ordner auf dessen Inhalt überprüft. Den Pfad des Ordners habe ich über "set" eine Variabel zugewiesen.
Nun würde ich aber gerene X ordner überprüfen. Also wenn in Ordner 1 oder Ordner2 oder Ordner3 eine Datei dann gehe zu usw.
meine Frage, wie kann ich meine Set Variable so erweitern, dass sie sich auf mehrere Ordner bezieht.
also sollte in der art aussehen:
vielen Dank für Hilfe und lieben Gruß
ich hab folgendes Problem. Ich habe ein kleine Batch datei geschrieben, die alle x min einen Ordner auf dessen Inhalt überprüft. Den Pfad des Ordners habe ich über "set" eine Variabel zugewiesen.
SET "Order=D:\Ordner1"
meine Frage, wie kann ich meine Set Variable so erweitern, dass sie sich auf mehrere Ordner bezieht.
also sollte in der art aussehen:
SET "Order=D:\Ordner1;D:\Ordner2;D:\Ordner3"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143056
Url: https://administrator.de/forum/ueber-set-einer-variablen-mehrere-verzeichnisspfade-zuweisen-143056.html
Ausgedruckt am: 23.12.2024 um 14:12 Uhr
14 Kommentare
Neuester Kommentar
Servus,
im prinzip kannst du das auch anders lösen...
Beispiel
Und das startetst du dann mit
Du kannst es aber auch als unterpunkt lösen:
.. und nach Rom führen auch noch andere Wege - probier es erstmal mit den beiden oberen.
Gruß
Ps: Wenn wir wüßten, was du da (in den Ordnern) suchst, wäre es einfacher, als Beispiel:
im prinzip kannst du das auch anders lösen...
Beispiel
dir %%1
pause
Und das startetst du dann mit
- scriptname Ordner1
- scriptname Ordner2
Du kannst es aber auch als unterpunkt lösen:
:para
SET "Ordner=D:\Ordner1" && :call sub1
SET "Ordner=D:\Ordner2" && :call sub1
goto end
:sub1
dir %Ordner%
pause
:end
.. und nach Rom führen auch noch andere Wege - probier es erstmal mit den beiden oberen.
Gruß
Ps: Wenn wir wüßten, was du da (in den Ordnern) suchst, wäre es einfacher, als Beispiel:
if exist D:\Ordner1\*.txt SET "Ordner=D:\Ordner1" && :call sub1
Hallo peterpan33!
Vielleicht so:
Voraussetzung ist hier, dass es nicht in Unterordnern der zu überprüfenden Ordner ".jpg"-Dateien gibt, die nicht bearbeitet werden sollen ...
Grüße
bastla
Vielleicht so:
:NEU
dir /b /a-d D:\Ordner1\*jpg D:\Ordner2\*.jpg "E:\Noch ein Ordner\*.jpg" >nul 2>&1 && GOTO PROGRAMM
ping -n 5 >NUL
GOTO NEU
:PROGRAMM
for /f "delims=" %%i in ('dir /s /b /a-d D:\Ordner1\*jpg D:\Ordner2\*.jpg "E:\Noch ein Ordner\*.jpg" 2^>nul') do echo Bearbeite "%%i"
goto :NEU
Grüße
bastla
Hallo peterpan33!
oder, wenn nur das Verschieben in den aktuellen Ordner passieren soll, überhaupt gleich zu
geraten (beides ungetestet), aber da kommt leider nur im ersten Vorschlag (und das nur implizit - "&&" steht nämlich für "nur ausführen, wenn beim vorigen Befehl kein Fehler aufgetreten ist", was hier also bedeutet, wenn eine passende Datei gefunden wurde) ein "IF" vor ...
Grüße
bastla
Kann ich der Variablen sagen, du bist diejenige die sich auf diese bezieht und dann die IF befehle durchlaufen lassen?
Ich hätte in diesem Fall einfach zu:NEU
dir /s /b /a-d D:\*jpg>nul 2>&1 && GOTO :PROGRAMM
ping -n 5 >NUL
GOTO :NEU
:PROGRAMM
for /f "delims=" %%i in ('dir /s /b /a-d D:\*.jpg 2^>nul') do move "%%i"
pause
:NEU
for /f "delims=" %%i in ('dir /s /b /a-d D:\*.jpg 2^>nul') do move "%%i"
ping -n 5 >NUL
GOTO :NEU
Grüße
bastla
Wenn schon fast alle mitmachen, versuch ich es auch mal (ungetestet):
Ist wohl durch >NUL noch nicht aufgefallen das Ping eine Adresse braucht.
Wenn die Ausgabe richtig erscheint, das Echo vor dem Move entfernen.
Gruß
LotPings
PS: Aus mir noch nicht erklärlichen Gründen funktioniert dies nicht:
Ist wohl durch >NUL noch nicht aufgefallen das Ping eine Adresse braucht.
@Echo off
(set Ordner="%ALLUSERSPROFILE%" "%USERPROFILE%")
:NEU
For %%A in (%Ordner%) Do Call :Process %%A
ping -n 5 Localhost >NUL
Echo %time:~0,8%
GOTO NEU
:Process
Echo %%A
For /R "%~1" %%B in (*.jpg) Do Echo move "%%B" .
Wenn die Ausgabe richtig erscheint, das Echo vor dem Move entfernen.
Gruß
LotPings
PS: Aus mir noch nicht erklärlichen Gründen funktioniert dies nicht:
For %%A in (%Ordner%) Do For /R "%%~A" %%B in (*.jpg) Do Echo move "%%B" .
Hallo peterpan33!
Hast Du nach der "
Noch kurz zum unten angeführten
Dagegen hätte LotPings ja sicher kaum Einwände (obwohl ich mit 127.0.0.1 eher zu einer existierenden IP greifen würde) - es war nur in allen Beispielen oberhalb die Adresse (0.0.0.0) nicht enthalten ...
Grüße
bastla
Wie kann ich auch auf Ordner mit Leerzeichen im Verzeichnisnamen zugreifen?
Indem Du Sie unter Anführungszeichen setzt - daher:dir /s /b /a-d "%Ordner%">nul 2>&1 && GOTO :PROGRAMM
pause
" noch mehr vor? Wenn nein würde ich (wie in meinem zweiten Beispiel oben) die eine relevante Zeile aus dem Unterprogramm einfach nach oben ziehen, wodurch sie sich mit der ohnehin nötigen Schleifen kombinieren lässt (auf Wunsch auch mit der - nicht erforderlichen - Angabe des Zieles "."):for /f "delims=" %%i in ('dir /s /b /a-d "%Ordner%" 2^>nul') do move "%%i" .>nul
was bedeutet beim Dir befehl die Syntax /a-d ?
Es sollen keine "directories" (sondern nur Dateien) aufgelistet werden - vermutlich nicht nötig (es sei denn, ein Ordner hieße etwa "Alle.meine.jpg"), aber auch nicht schädlich ...Noch kurz zum unten angeführten
ping 0.0.0.0 -n 5 >nul
Grüße
bastla
Wenn du deinen Code postest , sollte er auch komplett sein.
Wie bastla schon angemerkt hat fehlte das 0.0.0.0 bisher und das bessere 127.0.0.1 entspricht Localhost.
Außerdem scheinst du meine Variante nicht ausprobiert zu haben,
denn die war von Anfang an auf Ordner-/Dateinamen mit Leerzeichen vorbereitet.
Gruß
LotPings
Wie bastla schon angemerkt hat fehlte das 0.0.0.0 bisher und das bessere 127.0.0.1 entspricht Localhost.
Außerdem scheinst du meine Variante nicht ausprobiert zu haben,
denn die war von Anfang an auf Ordner-/Dateinamen mit Leerzeichen vorbereitet.
Gruß
LotPings
Hallo peterpan33,
von dem ungünstigen 0.0.0.0 kannst du dich wohl schwer trennen
Schön wenn es klappt.
Jetzt noch den Beitrag auf gelöst setzen und wir kriegen alle schöne Pfingsten.
Gruß
Lotpings
von dem ungünstigen 0.0.0.0 kannst du dich wohl schwer trennen
Schön wenn es klappt.
Jetzt noch den Beitrag auf gelöst setzen und wir kriegen alle schöne Pfingsten.
Gruß
Lotpings