alme123
Goto Top

Beliebigen Ordner wählen per Batch

Hallo zusammen,

ich verzweifle gerade an dem oben genanntem Problem.

Eine BatchDatei soll eine MusikDatei in einen beliebigen UnterOrdner in C:\Musik kopieren.

Die Anzahl der UnterOrdner variert.

Danke im Vorraus.

Alme123

Ps.: Muss weg, deshalb ist die Frage nicht so umfangreich

Content-ID: 196472

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

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Nr60730
Nr60730 04.01.2013 um 12:34:40 Uhr
Goto Top
Zitat von @Alme123:
Ps.: Muss weg, deshalb ist die Frage nicht so umfangreich

Alme123
Alme123 04.01.2013 um 13:22:11 Uhr
Goto Top
@Nr60730

eine Antwort darauf hast du aber nicht.

Alme123
Nr60730
Nr60730 04.01.2013 um 18:23:20 Uhr
Goto Top
Zitat von @Alme123:
@Nr60730

eine Antwort darauf hast du aber nicht.

Wie du lesen kannst, sogar zwei. face-wink

Aber du haettest ja die zeit gehabt mal naeher auf dein problem einzugehen, statt mir zu unterstellen ich wuedre mich nur an fragen beteiligen, fuer deren antwort ich keine portentielle losung haette.

Und du suchst doch nach ner loesung?

Alme123

ich
bastla
bastla 04.01.2013 aktualisiert um 21:39:42 Uhr
Goto Top
Hallo Alme123!

Um eine MusikDatei D:\MusikDatei.mp3 in einen beliebigen UnterOrdner in C:\Musik zu kopieren könntest Du etwa so vorgehen:
@echo off & setlocal
set "Datei=D:\Musik.mp3"  
set "Basis=C:\Musik"  

for /f "delims=:" %%i in ('dir /b/ad "%Basis%"^|findstr /n "^"') do set /a Anzahl=%%i  
set /a Nr=%random% %% Anzahl + 1 2>nul || goto :eof
for /f "tokens=1* delims=:" %%i in ('dir /b/ad "%Basis%"^|findstr /n "^"^|findstr /b "%Nr%:"') do set "Ordner=%%j"  
echo copy "%Musik%" "%Basis%\%Ordner%\"  
Das "echo" in der letzten Zeile ist zum Testen da ...

Grüße
bastla
Alme123
Alme123 04.01.2013 aktualisiert um 22:03:11 Uhr
Goto Top
@bastla

Wie immer: Auf den Punkt genau und fast richtig.

- Statt copy "%Musik%" "%Basis%\%Ordner%\" , copy "%Datei%" "%Basis%\%Ordner%\" schreiben.
- Die Unterordner im Ordner haben auch UnterOrdner, die auch manchmal ausgewählt werden, aber in den Variablen %Basis%\%Ordner%\ wird nicht der ganze Pfad zum UnterUnterOrdner angezeigt.

Alme123

[Edit: Problem hinzugefügt]
bastla
bastla 04.01.2013 aktualisiert um 21:57:53 Uhr
Goto Top
Hallo Alme123!

Das kommt vom "Verschönern" des Codes beim Posten face-sad - natürlich sollte es die gleiche Variable wie in Zeile 2 sein ...

BTW und zum Thema "Verschönern": Wenn das Test-"echo" nicht mehr benötigt wird, würde ich die letzte Zeile so schreiben:
copy "%Datei%" "%Basis%\%Ordner\%">nul
Grüße
bastla
Alme123
Alme123 04.01.2013 um 22:00:32 Uhr
Goto Top
@bastla

in der Zwischenzeit oberen Beitrag erneuert.

Alme123
bastla
bastla 04.01.2013 aktualisiert um 22:05:12 Uhr
Goto Top
Hallo Alme123!

Wenn alle Unterordner einbezogen werden sollen, dann so:
@echo off & setlocal
set "Datei=D:\Musik.mp3"  
set "Basis=C:\Musik"  

for /f "delims=:" %%i in ('dir /s/b/ad "%Basis%"^|findstr /n "^"') do set /a Anzahl=%%i  
set /a Nr=%random% %% Anzahl + 1 2>nul || goto :eof
for /f "tokens=1* delims=:" %%i in ('dir /s/b/ad "%Basis%"^|findstr /n "^"^|findstr /b "%Nr%:"') do set "Ordner=%%j"  
copy "%Datei%" "%Ordner%\">nul  
Grüße
bastla
Alme123
Alme123 04.01.2013 aktualisiert um 22:18:43 Uhr
Goto Top
@bastla

Kleiner Fehler: Statt set "Ordner=C:\Musik" , set "Ordner=C:\Musik\" , sonst sucht er nur im aktuellen Verzeichnis.

Alme123
bastla
bastla 04.01.2013 aktualisiert um 22:51:08 Uhr
Goto Top
Hallo Alme123!

Kann ich nicht nachvollziehen (funktioniert bei mir - getestet unter XP), aber es spricht auch nix gegen Deine Schreibweise (bis auf die Tatsache, dass die Variable Basis heißen sollte face-wink) ...

Grüße
bastla
Alme123
Alme123 05.01.2013 um 08:11:24 Uhr
Goto Top
@bastla

Ist schon richtig, nach einem Neustart gings richtig.

Alme123

{Theard closed]