Namen der Unterverzeichnisse in verschiedene Variable einlesen mittels Batch
Hallo und ein schönes Wochenende.
Ich merke leider, daß ich schon länger nichts mehr mit DOS (Batch) erstellt habe.
Folgendes Problem
Ich möchte mittels Batch-Datei, die auf Win-XP, Win-Vista, Win-7 und Win-8 laufen soll, die Namen (Bezeichnung) von Unterverzeichnissen (Unterordnern) auslesen und Variablen zuweisen.
Die Anzahl und die Namen der Unterverzeichnisse sind nicht bekannt.
Da die Namen der Unterverzeichnisse für eine weitere Bearbeitung benötigt werden, wird für jede Unterordnerbezeichnung eine eigene Variable benötigt (z.B. "B" für das erste Verzeichnis, "C" für das zweite Verzeichnis usw.)
Ich habe schon verschiedene Varianten getestet.
Leider wird immer nur ein Wert der letzten Zeile vom DIR-Befehl in die Variable "benutz" übernommen
for /f "tokens=2*" %%B in ('dir /a:d %anwend%') do set benutz=%%B
Bei dieser Variante wird wiederum nur der letzte Verzeichniseintrag in die Variable "benutz" übernommen
for /f "tokens=*" %%B in ('dir /b %anwend%') do set benutz=%%B
Bitte um Hilfe
Danke im voraus
Gerry
Ich merke leider, daß ich schon länger nichts mehr mit DOS (Batch) erstellt habe.
Folgendes Problem
Ich möchte mittels Batch-Datei, die auf Win-XP, Win-Vista, Win-7 und Win-8 laufen soll, die Namen (Bezeichnung) von Unterverzeichnissen (Unterordnern) auslesen und Variablen zuweisen.
Die Anzahl und die Namen der Unterverzeichnisse sind nicht bekannt.
Da die Namen der Unterverzeichnisse für eine weitere Bearbeitung benötigt werden, wird für jede Unterordnerbezeichnung eine eigene Variable benötigt (z.B. "B" für das erste Verzeichnis, "C" für das zweite Verzeichnis usw.)
Ich habe schon verschiedene Varianten getestet.
Leider wird immer nur ein Wert der letzten Zeile vom DIR-Befehl in die Variable "benutz" übernommen
for /f "tokens=2*" %%B in ('dir /a:d %anwend%') do set benutz=%%B
Bei dieser Variante wird wiederum nur der letzte Verzeichniseintrag in die Variable "benutz" übernommen
for /f "tokens=*" %%B in ('dir /b %anwend%') do set benutz=%%B
Bitte um Hilfe
Danke im voraus
Gerry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 275175
Url: https://administrator.de/contentid/275175
Ausgedruckt am: 18.11.2024 um 09:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Gerry,
in 99,9% aller Fälle ist es unsinnig riesige Strukturen in eine Unmenge von Variablen zu packen (was der Grund dafür sein könnte, dass die Google Ergebnisse so dürftig sind). Schließlich existiert diese Struktur ja bereits in Form des Dateisystems und irgendwann würden dir die Variablennamen ausgehen. Wenn du also ein wenig genauer erklärst was du letztlich bezwecken willst, findet sich vielleicht eine sinnvolle Alternative.
Grüße
rubberman
in 99,9% aller Fälle ist es unsinnig riesige Strukturen in eine Unmenge von Variablen zu packen (was der Grund dafür sein könnte, dass die Google Ergebnisse so dürftig sind). Schließlich existiert diese Struktur ja bereits in Form des Dateisystems und irgendwann würden dir die Variablennamen ausgehen. Wenn du also ein wenig genauer erklärst was du letztlich bezwecken willst, findet sich vielleicht eine sinnvolle Alternative.
Grüße
rubberman
Zitat von @rubberman:
in 99,9% aller Fälle ist es unsinnig riesige Strukturen in eine Unmenge von Variablen zu packen (was der Grund dafür
sein könnte, dass die Google Ergebnisse so dürftig sind). Schließlich existiert diese Struktur ja bereits in Form
des Dateisystems und irgendwann würden dir die Variablennamen ausgehen.
in 99,9% aller Fälle ist es unsinnig riesige Strukturen in eine Unmenge von Variablen zu packen (was der Grund dafür
sein könnte, dass die Google Ergebnisse so dürftig sind). Schließlich existiert diese Struktur ja bereits in Form
des Dateisystems und irgendwann würden dir die Variablennamen ausgehen.
Muss es Batch sein? Auch das hängt natürlich davon ab, was Du im nächsten Schritt mit dem Inhalt dieser Variablen machen willst, aber in VBS wäre Dein Anliegen kein Problem. Da gehen Dir auch nicht die Variablen aus, da Du mit einem Array arbeiten kannst.
Hallo Gerry,
ich gehe immer noch davon aus, dass das Speichern in Variablen unsinnig ist. Da du aber nichts darüber sagen willst, was letztlich bei der Aktion herauskommen soll, kann man dir dahingehend nicht helfen.
Wie auch immer. Du kannst ein assoziatives Array bauen. In diesem Fall mit den Variablen user_n, mit n = 1 bis Anzahl Profile.
Grüße
rubberman
ich gehe immer noch davon aus, dass das Speichern in Variablen unsinnig ist. Da du aber nichts darüber sagen willst, was letztlich bei der Aktion herauskommen soll, kann man dir dahingehend nicht helfen.
Wie auch immer. Du kannst ein assoziatives Array bauen. In diesem Fall mit den Variablen user_n, mit n = 1 bis Anzahl Profile.
@echo off &setlocal
for /f "tokens=1* delims=:" %%i in ('dir /ad /b "%userprofile%\..\*" ^|findstr /n .') do (
set "n=%%i"
set "user_%%i=%%j"
)
:: Testausgabe
setlocal EnableDelayedExpansion
for /l %%i in (1,1,%n%) do echo !user_%%i!
pause
rubberman
Hallo Gerry,
du kannst das alles in eine Subroutine packen und diese für jedes gefundene Profil aufrufen.
Bsp.:
Grüße
rubberman
du kannst das alles in eine Subroutine packen und diese für jedes gefundene Profil aufrufen.
Bsp.:
@echo off &setlocal
for %%i in ("%userprofile%\..") do set "profiles=%%~fi"
for /f "delims=" %%i in ('dir /ad /b "%userprofile%\..\*"') do (
set "profile=%profiles%\%%i"
call :processprofile
)
pause
exit /b
:processprofile
echo Mach was mit "%profile%" ...
exit /b
rubberman