hausens
Goto Top

Dir Optionen reichen nicht

Guten Morgen,

Da ich mit batch noch nicht sonderlich vertraut bin stoße ich des öffteren an meine Grenzen und muss mir Hilfe suchen, so wie hier.

Ich möchte gerne alle Dateien in den Ordnern und deren Unterordnern ausgeben und in ein .txt File schreiben.
Das ist kein Problem:

dir C:\ /b /s > File.txt

Nun gibt mir dieser Befehl auch denn gesammten Pfad zur Datei an, nur will ich das nicht.
C:\Windows\assembly\etc\etc\etc

Gibt es eine Möglichkeit nur die Dateinamen auszugeben und nicht den dazugehörigen Pfad?

Bitte um Andwort.


Freundliche Grüße

Hausens

Content-Key: 205840

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

Printed on: April 26, 2024 at 15:04 o'clock

Member: Endoro
Endoro Apr 30, 2013 at 06:11:35 (UTC)
Goto Top
Hallo Hausens,

das geht mit einer Forschleife:
@echo off & setlocal
set "startfolder=."  
(for /r "%startfolder%" %%i in (*) do echo %%~nxi)>file.txt  

Gruss!
Member: andimue
andimue Apr 30, 2013 at 06:32:46 (UTC)
Goto Top
Hi Endoro,

event. würde noch ein @ for dem echo Sinn machen, also so:
@echo off & setlocal
set "startfolder=."  
(for /r "%startfolder%" %%i in (*) do @echo %%~nxi)>file.txt  

Ohne den @ hab ich (zumindest hier auf einem XP-CLient) sieht meine Ausgabe so aus:

H:\>echo AUTOEXEC.BAT 
AUTOEXEC.BAT

H:\>echo CONFIG.SYS 
CONFIG.SYS

und mit @ sieht es so aus:

AUTOEXEC.BAT
CONFIG.SYS

Gruß
Andi
Member: Endoro
Endoro Apr 30, 2013 at 07:00:31 (UTC)
Goto Top
Hallo andimue,
das kann ich nicht bestätigen. Das passiert nur, wenn "@echo off" gelöscht wird (also bei "echo on").

Gruss!
Member: andimue
andimue Apr 30, 2013 updated at 12:46:59 (UTC)
Goto Top
Hi Endoro,

du hast Recht.
Ich hab den Fehler gemacht, deinen for-Befehl (und nur den!) interaktiv (also nicht innerhalb einer Prozedur auszuführen).
Dort hatte ich das Verhalten, wie ich es beschrieben habe. Innerhalb einer Prozedur funktioniert es wie von dir beschrieben.

Sorry für die gestiftete Verwirrung

Gruß Andi