Unbekannte Ordnernamen in Variablen schreiben
Hallo!
Ich versuche mit batch unbekannte Unterordner in eine Variable zu schreiben, um diese als Pfadangabe zum Packen derer Inhalte zu verwenden.
System Windows XP SP3
Seit gestern mit batch näher befasst, also totaler Anfänger.
Zu meiner Frage:
Also, meine .bat datei liegt in einerm Ordner in dem sich ein Unterordner namens "Levels" befindet.
In diesen Ordner befinden sich wie der Name sagt Levels von einem Game.
Jedes Level besitzt einen eigenen Ordner in diesem Levels Verzeichnis, der mit dem Namen des Levels betitelt ist.
So schaut die Struktur also aus:
Hauptordner\
Hauptordner\meine.bat
Hauptordner\Levels\
Hauptordner\Levels\LevelX\
Hauptordner\Levels\LevelY\
Hauptordner\Levels\LevelZ155548\
Ich möchte nun von meiner .bat Datei aus in jeden Levelordner reingehen um dort mit Hilfe von 7-zip dateien zu packen.
Das script zum Packen funktioniert einwandfrei, nur habe ich es bisher immer einzeln aus jedem Levels ordner gestartet:
Ich lösche also erst die vorhandene .zip und erstelle eine neue.
%sevenzip% ist der Pfad zu meiner 7z.exe
Dieses Script soll nun in meiner .bat Datei im Hauptordner funktionieren und dabei nacheinander alle Levels durchmachen.
Das hier habe ich bei meiner Suche hier schon gefunden:
Das gibt mir die Levels schön aufgelistet untereinander. Nur wie mache ich damit weiter, wenn es überhaupt geht?
Ich versuche mit batch unbekannte Unterordner in eine Variable zu schreiben, um diese als Pfadangabe zum Packen derer Inhalte zu verwenden.
System Windows XP SP3
Seit gestern mit batch näher befasst, also totaler Anfänger.
Zu meiner Frage:
Also, meine .bat datei liegt in einerm Ordner in dem sich ein Unterordner namens "Levels" befindet.
In diesen Ordner befinden sich wie der Name sagt Levels von einem Game.
Jedes Level besitzt einen eigenen Ordner in diesem Levels Verzeichnis, der mit dem Namen des Levels betitelt ist.
So schaut die Struktur also aus:
Hauptordner\
Hauptordner\meine.bat
Hauptordner\Levels\
Hauptordner\Levels\LevelX\
Hauptordner\Levels\LevelY\
Hauptordner\Levels\LevelZ155548\
Ich möchte nun von meiner .bat Datei aus in jeden Levelordner reingehen um dort mit Hilfe von 7-zip dateien zu packen.
Das script zum Packen funktioniert einwandfrei, nur habe ich es bisher immer einzeln aus jedem Levels ordner gestartet:
del client.zip
%sevenzip% a -tzip client.zip * -xr!AusgeschlosseneOrdner\
%sevenzip% ist der Pfad zu meiner 7z.exe
Dieses Script soll nun in meiner .bat Datei im Hauptordner funktionieren und dabei nacheinander alle Levels durchmachen.
Das hier habe ich bei meiner Suche hier schon gefunden:
for /d %%i in ("C:\Pfad\Hauptordner\Levels\*.*") do echo %%~xni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112884
Url: https://administrator.de/forum/unbekannte-ordnernamen-in-variablen-schreiben-112884.html
Ausgedruckt am: 28.04.2025 um 18:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo Cassio und willkommen im Forum!
Am einfachsten dürfte es sein, temporär in den jeweiligen Ordner zu wechseln - (ungetestet) also:
Grüße
bastla
Am einfachsten dürfte es sein, temporär in den jeweiligen Ordner zu wechseln - (ungetestet) also:
@echo off & setlocal
for /d %%i in ("C:\Pfad\Hauptordner\Levels\*.*") do (
pushd "%%i"
del client.zip
%sevenzip% a -tzip client.zip * -xr!AusgeschlosseneOrdner\
popd
)
bastla
Hallo Cassio!
Nur zur Sicherheit: Ein Ordner gilt als leer, wenn er keine Dateien und keine Unterordner außer ".svn" enthält? Wenn ja, dann etwa so:
Die beiden "REM" sollen das Testen erleichtern, da so die dahinter stehenden Befehle nicht ausgeführt werden - wenn die Ergebnisse vernünftig aussehen, einfach diese "REM" (und ev auch die Zeile 8) entfernen.
Grüße
bastla
Nur zur Sicherheit: Ein Ordner gilt als leer, wenn er keine Dateien und keine Unterordner außer ".svn" enthält? Wenn ja, dann etwa so:
@echo off & setlocal
for /d %%i in ("C:\Pfad\Hauptordner\Levels\*.*") do (
pushd "%%i"
set Doit=
dir /b /a-d >nul 2>&1 && set Doit=True
dir /b /ad|findstr /v /x /c:"\.svn">nul && set Doit=True
if defined Doit (
echo Bearbeite Ordner %%i
REM del client.zip 2>nul
REM %sevenzip% a -tzip client.zip * -xr!AusgeschlosseneOrdner\
)
popd
)
Grüße
bastla
Hallo Cassio!
Eigentlich nimmst Du eine vollständige Umkehrung vor - wenn es damit klappt, hätte es auch umgekehrt funktionieren sollen. Andererseits ist es ja letztlich egal, auf welche Art Du die richtigen Ordner herausfindest (nur "Doit" hieße dann wohl besser "Omit"
).
Fazit: Wenn Deine aktuelle Schreibweise (ausreichend getestet) das gewünschte Ergebnis bringt, lass es einfach dabei ...
Grüße
bastla
Eigentlich nimmst Du eine vollständige Umkehrung vor - wenn es damit klappt, hätte es auch umgekehrt funktionieren sollen. Andererseits ist es ja letztlich egal, auf welche Art Du die richtigen Ordner herausfindest (nur "Doit" hieße dann wohl besser "Omit"
Fazit: Wenn Deine aktuelle Schreibweise (ausreichend getestet) das gewünschte Ergebnis bringt, lass es einfach dabei ...
Grüße
bastla