2009-05-31 5 views
5

Zum Beispiel in Windows Explorer?Wie kann man die Namen von Dateien in einem Ordner als Text extrahieren?

+2

Verwenden eines beliebigen bestimmten Sprache/Werkzeug? –

+2

In welchem ​​Sinne? Möchten Sie eine Verknüpfung im Kontextmenü verwenden, um den Dateinamen zu kopieren? Oder ein Skript, um es zu tun und die Ergebnisse auszudrucken? – Kazar

+0

Jedes Mal, wenn der Inhalt eines freigegebenen Ordners auf meinem Computer geändert wird, möchte ich eine E-Mail an alle senden, mit denen ich den Ordner geteilt habe. – systemovich

Antwort

21

In Abwesenheit von jede weitere Informationen,

c:> cd directory 
c:> dir > files.txt 

eine Liste von Dateien in eine Textdatei (files.txt)

EDIT zu schreiben: dir /b einfach die nackten Dateinamen zu erzeugen

+1

"dir/b> dateinamen.txt" <- '/ b' steht für "bare notiz" –

+0

Doh. Bekannt. Danke –

+0

Danke, Brian. Also das kann nicht in Windows gemacht werden, nur in DOS? – systemovich

1

Wenn wir C# sprechen dann die folgenden wird der vollständige Pfad in einem Array von Strings zurück:

string[] files = Directory.GetFiles(directory); 

Um die Dateinamen zu erhalten:

foreach (string file in files) 
{ 
    Console.WriteLine(Path.GetFileName(file)); 
} 
6

Für nur die Dateinamen:

c:\dir /b > files.txt 
3

Für eine Unix-Umgebung cd mydirectory && ls > filelist.txt

+0

Hinweis: ls ist schlau genug zu wissen, wenn es Piped ist. es gibt also nicht die normalen Informationen, die es hätte, wenn Sie es direkt von der Konsole aus ausführen würden. –

1

In Python! Es nimmt den Weg als Argument.

import os 
import sys 

if __name__ == '__main__': 
    path = sys.argv[1] 

    dir = os.listdir(path) 
    for fname in dir: 
     print fname 
0

Um einig zusätzlichen allgemeinen Geschmack, in einem PHP-Einzeiler hinzuzufügen, wie etwa:

<?php file_put_contents("listing.txt", implode(PHP_EOL, glob('*'))); 
4

ich, wenn Sie über die Unterscheidung von Dateien und Verzeichnissen oder nicht bin nicht sicher, egal. Im Folgenden werden die Namen der Dateien im aktuellen Verzeichnis in listing.txt geschrieben.

In DOS:

C:\> IF EXIST listing.txt ERASE listing.txt 
C:\> FOR %I IN (*.*) DO (ECHO %~nxI) >>listing.txt 

In jedem Bourne-based Schale:

machine$ rm listing.txt 
machine$ for f in *; do [ -f $f ] && echo "$f" >> listing.txt ; done 

oder:

machine$ find . -type f -depth 1 -print > listing.txt 
+0

+1 für Batch-Stoffe. –