jon-doe
Goto Top

Per Batch Überordnernamen für Datei übernehmen

Moin,

um einen 14 Jahre alten Thread ruhen zu lassen starte ich meines Anliegens wegen einen neuen.

Ich habe folgende Batchdatei von @bastla aus dem Thread übernommen:

@echo off & setlocal
if "%~1" neq "" if exist "%~1\" goto :DoIt  
echo Bitte einen Ordner uebergeben
pause
goto :eof

:DoIt
set "Ordner=%~nx1"  
copy /b "%~1\*.mp3" "%userprofile%\Desktop\%Ordner%.mp3"  

Leider verzweifel ich an der kleinen Änderung, dass ich gerne an Stelle des Ordnernamens, welcher per D&D übergeben wird, den Namen des Ordners verwenden möchte, in dem sich der D&D-Ordner befindet.

Ich nehme an, es handelt sich um die Zeile
set "Ordner=%~nx1"  
. n steht wohl für name und x für Erweiterung, leider kann ich nicht rausfinden, wie ich das zum Überordner ändern muss und bitte daher euch um Hilfe.

<edit>Alternativ wäre auch möglich, den Überordner selbst per D&D auf die *.bat zu ziehen und dann die *.mp3 aus den Unterordnern zusammen zu fügen, was mir allerdings auch nicht gelingen will.</edit>

Vielen Dank für eure Hilfe im Vorraus

Jon

Content-Key: 2356439866

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

Printed on: April 24, 2024 at 08:04 o'clock

Mitglied: 1915348599
1915348599 Mar 31, 2022 updated at 12:15:04 (UTC)
Goto Top
Zitat von @Jon-Doe:


Leider verzweifel ich an der kleinen Änderung, dass ich gerne an Stelle des Ordnernamens, welcher per D&D übergeben wird, den Namen des Ordners verwenden möchte, in dem sich der D&D-Ordner befindet.

set "parentfolder=%~dp1"  
echo %parentfolder%
Member: Jon-Doe
Jon-Doe Mar 31, 2022 at 13:32:08 (UTC)
Goto Top
Zitat von @1915348599:
set "parentfolder=%~dp1"  
echo %parentfolder%

Vielen Dank für die schnelle Antwort. Leider kommt also Echo, wenn man Ordner 3 (aus Ordner 2) per D&D auf die *.bat zieht, der komplette Pfad des Überordners

Laufwerk:\Ordner 1\Ordner 2\

und nicht nur dessen Name

Ordner 2
heraus.
Mitglied: 1915348599
Solution 1915348599 Mar 31, 2022 updated at 14:33:26 (UTC)
Goto Top
Auch kein Problem wusste ich nur nicht das du es so willst, ... Ist aber auch kein Problem
set "parentfolder=%~dp1"  
for /f "delims=" %%a in ("%parentfolder:~0,-1%") do set "parentfolder=%%~nxa"  
echo %parentfolder%
Member: Jon-Doe
Jon-Doe Mar 31, 2022 at 14:18:39 (UTC)
Goto Top
Ich habe

for /f "delims=" %%a in ("%~dp1") do set "parentfolder=%%~nxa"  
echo %parentfolder%

in der Batch
@echo off & setlocal
if "%~1" neq "" if exist "%~1\" goto :DoIt  
goto :eof

:DoIt

for /f "delims=" %%a in ("%~dp1") do set "parentfolder=%%~nxa"  
copy /b "%~1\*.mp3" "%userprofile%\Desktop\ot\%parentfolder%.mp3"  

eingesetzt und bekomme nun ein .mp3 ohne Namen im Ordner "ot" auf dem Desktop.

Bei der Ausgabe

echo %parentfolder%

bekomme ich

ECHO ist eingeschaltet <ON>

ausgegeben, dabei habe ich die lines C&P um Tippfehler zu vermeiden.
Mitglied: 1915348599
1915348599 Mar 31, 2022 updated at 14:35:06 (UTC)
Goto Top
Uups Backslash vergessen, sorry, s. Korrektur im Kommentar oben.
Member: Jon-Doe
Jon-Doe Mar 31, 2022 at 14:54:50 (UTC)
Goto Top
Jetzt klappt es!

Vielen Dank für die Hilfe und Geduld!

Falls künftig jemand das gleiche Vorhaben vorhaben sollte, hier einmal komplett:
@echo off & setlocal
if "%~1" neq "" if exist "%~1\" goto :DoIt  
goto :eof

:DoIt
set "parentfolder=%~dp1"  
for /f "delims=" %%a in ("%parentfolder:~0,-1%") do set "parentfolder=%%~nxa"  
copy /b "%~1\*.mp3" "%userprofile%\Desktop\ot\%parentfolder%.mp3"