Ordnerpfad ermitteln, was stimmt hier nicht?
Hallo Zusammen,
ich brauche genau das hier, aber mit den Schleifen tu ich mich immer schwer, daher bitte ich um ein wenig Hilfe bei der Anpassung. Auf einem Rechner gibt es den Pfad "E:\Test\Bilder" diesen möchte ich suchen lassen und eine Variable daraus generieren für den restlichen Teil meiner Batch. Nur irgendwie bekomme ich es nicht hin:
Zielsetzung ist die Festplatten C D und E zu durchsuchen...
Danke
ich brauche genau das hier, aber mit den Schleifen tu ich mich immer schwer, daher bitte ich um ein wenig Hilfe bei der Anpassung. Auf einem Rechner gibt es den Pfad "E:\Test\Bilder" diesen möchte ich suchen lassen und eine Variable daraus generieren für den restlichen Teil meiner Batch. Nur irgendwie bekomme ich es nicht hin:
set "Ordner=Bilder"
for %i in ("%Ordner%") do Dir /s /b /ad "%~i" | findstr /e /i "\%~nxi"
xcopy C:\test.jpg %Ordner% /y
pause
Zielsetzung ist die Festplatten C D und E zu durchsuchen...
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 597488
Url: https://administrator.de/forum/ordnerpfad-ermitteln-was-stimmt-hier-nicht-597488.html
Ausgedruckt am: 22.12.2024 um 10:12 Uhr
10 Kommentare
Neuester Kommentar
Moin,
Was genau soll die zweite Zeile tun? Was sie tut ist, dass sie im aktuellen Pfad einen Ordner names "Bilder" durchsucht (von dem ich vermute, dass es den nicht gibt) und darin dann nach einem String, der in einer uns unbekannten Variablen %nxi steht.
Ich würde das Problem sowieso mit der Powershell lösen.
Liebe Grüße
Erik
> set "Ordner=Bilder"
> for %i in ("%Ordner%") do Dir /s /b /ad "%~i" | findstr /e /i "\%~nxi"
>
Was genau soll die zweite Zeile tun? Was sie tut ist, dass sie im aktuellen Pfad einen Ordner names "Bilder" durchsucht (von dem ich vermute, dass es den nicht gibt) und darin dann nach einem String, der in einer uns unbekannten Variablen %nxi steht.
Ich würde das Problem sowieso mit der Powershell lösen.
Liebe Grüße
Erik
Moin,
Ja, weil die in Batches auch nicht wirklich funktionieren. Batch-Schleifen sind gruselig. Das geht ja in Assembler leichter.
Nö.
Der LW-Buchstabe ist da schon mit bei.
hth
Erik
Zitat von @zeroblue2005:
ja ich weiss, aber ich bin halt vom alten Schlag und komme einfach mit Batch gut klar, nur die blöden Schleifen bringen mich um den Verstand.
ja ich weiss, aber ich bin halt vom alten Schlag und komme einfach mit Batch gut klar, nur die blöden Schleifen bringen mich um den Verstand.
Ja, weil die in Batches auch nicht wirklich funktionieren. Batch-Schleifen sind gruselig. Das geht ja in Assembler leichter.
> :: Suche Userpfad
> if exist "C:\%userprofile%\Documents\" (set "UserPfad=%userprofile%\Documents")
>
Nö.
C:\Users\meier>echo %userprofile%
C:\Users\meier
C:\Users\meier>echo "C:\%userprofile%"
"C:\C:\Users\meier
Der LW-Buchstabe ist da schon mit bei.
hth
Erik
Ich habe dein Problem nicht ganz verstanden, jedenfalls finde ich deinen Ansatz grundsätzlich nicht schlecht. Folgender Vorschlag:
Sonst, wenn du es unbedingt mit einer For-Schleife machen willst, kannst du dir auch nochmal folgendes anschauen (ist aber Vergleichsweise deutlich weniger performant weil die ganze Festplatte durchsucht wird):
@echo off
rem Suche Userpfad
if exist "%userprofile%\Documents\" set "UserPfad=%userprofile%\Documents"
if exist "D:\%username%\Documents\" set "UserPfad=D:\%username%\Documents"
if exist "E:\%username%\Documents\" set "UserPfad=E:\%username%\Documents"
if x%UserPfad% neq x (
echo Pfade ist: %UserPfad%
) else (
echo Kein Pfad gefunden
goto DoNotCopy
)
rem Befehl
xcopy C:\test.txt %UserPfad% /y
:DoNotCopy
pause
Sonst, wenn du es unbedingt mit einer For-Schleife machen willst, kannst du dir auch nochmal folgendes anschauen (ist aber Vergleichsweise deutlich weniger performant weil die ganze Festplatte durchsucht wird):
for /f "tokens=1,2,3 delims=\" %i in ('cmd /c dir C:\ /s /b /ad ^| find /i "\%username%\documents"') do set pfad=%i\%j\%k