Batch - Dateisuche funktioniert nicht, sobald Leerzeichen

Hallo Gemeinde,

folgende Batch funktioniert wunderbar, solange kein Leerzeichen im Suchpfad vorkommt. Ist ein Leerzeichen vorhanden, funktioniert die Batch nicht mehr. Ich rätsel seit Wochen, bin aber auch nur Autodidakt. Die Batch ist mit einem C# Programm verknüpft. C# sammelt die Daten erfolgreich. Anschließend soll die Batch eine gesuchte Datei finden. Die Batch scheitert nur, wenn ein Leerzeichen im Pfad vorkommt. Kann mir ein Profi helfen?
Batch:

@echo off
pushd
set scriptname=Dateisuche
for /f „usebackq tokens=* delims=“ %%v in („d:\lw.log“) do set sDrives=%%v

rem Color
set colWork=color A
set colWait=color A
%colWork%
rem Color

title %scriptname%
%colWait%
set /p dmuster=Welche Datei suchst Du in %Sdrives% ?:
if „%dmuster%“=="" exit
%colWork%
for %%d in (%sDrives%) do (
title %scriptname% - durchsuche %%d nach %dmuster% …
dir /s /b /on /A-D %%d | findstr /i /C:"%dmuster%" > Suchergebnis.txt
)
title %scriptname% - fertig.
%colWait%
start „“ Suchergebnis.txt

set AZ="
for /F "tokens=* delims= " %%a in (Suchergebnis.txt) do echo Wiedergabe von: %AZ%%%a%AZ% & start „“ %AZ%%%a%AZ% && pause
exit

Hallo,

poste doch nochmal den Code, und beim nächsten Mal nutze die Präformatierung. Das ist das 6. Symbol oben im Editormenü, gleich nach den Anführungszeichen. Dann werden auch deine Anführungszeichen nicht in diese komischen „deutschen“ Anführungszeichen umgewandelt.

Zu deinem eigentlichen Problem: vielleicht wird’s übersichtlicher, wenn du das so wie beschrieben nochmal postest, aber viel Erfahrung mit Batch-Dateien habe ich nicht, ich habe selbst nur sehr kurze und sehr einfache geschrieben, deswegen verstehe ich auch nicht alles, was in deiner steht, ohne nachzuschlagen. Aber mein Ansatz wäre, die Stellen, in denen der Pfad vorkommt, in Anführungszeichen zu setzen. Das passiert auch im Konsolenfenster, wenn man ein „cd“ eingibt und sich dann buchstabenweise mit Tab zu einem Pfad „durchkämpft“, der Leerzeichen beinhaltet, also Windows macht das automatisch, mit dem Ergänzen von Anführungszeichen.

Gruß
Christa

1 Like

Hi, vielen Dank für die schnelle Antwort. Die Präformatierung als 6. Symbol im Editormenü finde ich nicht. Wie kann ich das genau lösen?
VG
Veiti

Hmm … hier!

grafik

@echo off

pushd
set scriptname=Dateisuche
for /f „usebackq tokens=* delims=“ %%v in („d:\lw.log“) do set sDrives=%%v

rem Color
set colWork=color A
set colWait=color A
%colWork%
rem Color

title %scriptname%
%colWait%
set /p dmuster=Welche Datei suchst Du in %Sdrives% ?:
if „%dmuster%“=="" exit
%colWork%
for %%d in (%sDrives%) do (
title %scriptname% - durchsuche %%d nach %dmuster% …
dir /s /b /on /A-D %%d | findstr /i /C:"%dmuster%" > Suchergebnis.txt
)
title %scriptname% - fertig.
%colWait%
start „“ Suchergebnis.txt

set AZ="
for /F "tokens=* delims= " %%a in (Suchergebnis.txt) do echo Wiedergabe von: %AZ%%%a%AZ% & start „“ %AZ%%%a%AZ% && pause
exit

Nochmal: du kopierst den ganzen Text aus deinem Editor hier in das Antwortfenster, dann markierst du den Text komplett und drückst dann das besagte Symbol. Und schaust in der Vorschau, ob das auch richtig übernommen wurde!

@echo off
pushd
set scriptname=Dateisuche
for /f "usebackq tokens=* delims=" %%v in ("d:\lw.log") do set sDrives=%%v

rem Color
set colWork=color A
set colWait=color A
%colWork%
rem Color

title %scriptname%
%colWait%
set /p dmuster=Welche Datei suchst Du in %Sdrives% ?: 
if "%dmuster%"=="" exit
%colWork%
for %%d in (%sDrives%) do (
title %scriptname% - durchsuche %%d nach %dmuster% ...
dir /s /b /on /A-D %%d | findstr /i /C:"%dmuster%" > Suchergebnis.txt
)
title %scriptname% - fertig.
%colWait%
start "" Suchergebnis.txt

set AZ="
for /F "tokens=* delims= " %%a in (Suchergebnis.txt) do echo Wiedergabe von: %AZ%%%a%AZ% & start "" %AZ%%%a%AZ% && pause
exit

ahh, verstanden

hi,

wie äußert sich denn das scheitern?

als Batch laufen Leerzeichen im Dateinamen, als auch im Ordner, bei mir problemlos durch.

ist das öffnen jeder in Suchergebnis.txt enthaltenen Zeilen nicht etwas unsinnig, da die Ausgabe per > die Datei ohnehin mit jedem Laufwerk überschreibt?

grüße
lipi

So, und nun zurück zu meiner Aussage:

So wie ich das verstehe, ist der Pfad in %Sdrives% zu finden. Was passiert, wenn du das in Anführungszeichen setzt?

Ich Idiot habe immer woanders den Fehler gesucht. Ich habe bestimmt 6 Std. Zeit verschwendet, weil mir das einfachste nicht einfiel…bissle peinlich
Christa, lass’ Dich umarmen! Dein Tipp war die Lösung :slight_smile: Recht herzlichen Dank!!!

@littlepinguin
Ich suche nach tausenden Dateien. Die gesuchte Datei kann mehrfach vorkommen und wechelnde LW-Buchstaben haben, deshalb >

1 Like

Freut mich, dass es geholfen hat. :slight_smile:

ich werde dieses Forum mal häufiger nutzen, wenn ich wieder zu blöd bin :slight_smile:

2 Like

Nachtrag, weil ich oft Foren besucht habe, wobei die Lösung irgendwann kam, aber nicht für alle verständlich war.

@echo off
pushd
set scriptname=Dateisuche
for /f "usebackq tokens=* delims=" %%v in ("d:\lw.log") do set sDrives=%%v

rem Color
set colWork=color A
set colWait=color A
%colWork%
rem Color

title %scriptname%
%colWait%
set /p dmuster=Welche Datei suchst Du in %Sdrives% ?: 
if "%dmuster%"=="" exit
%colWork%
for %%d in ("%sDrives%") do (
title %scriptname% - durchsuche %%d nach %dmuster% ...
dir /s /b /on /A-D %%d | findstr /i /C:"%dmuster%" > Suchergebnis.txt
)
title %scriptname% - fertig.
%colWait%
start "" Suchergebnis.txt

set AZ="
for /F "tokens=* delims= " %%a in (Suchergebnis.txt) do echo Wiedergabe von: %AZ%%%a%AZ% & start "" %AZ%%%a%AZ% && pause
exit
1 Like

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.