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
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.
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
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?
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 Recht herzlichen Dank!!!
@littlepinguin
Ich suche nach tausenden Dateien. Die gesuchte Datei kann mehrfach vorkommen und wechelnde LW-Buchstaben haben, deshalb >
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