Wie kann ich testen, ob eine Liste von Dateien existiert?

7

Ich habe eine Datei, die Dateinamen auflistet, jeder in seiner eigenen Zeile, und ich möchte testen, ob jeder in einem bestimmten Verzeichnis existiert. Zum Beispiel könnten einige Beispielzeilen der Datei

sein %Vor%

Das Verzeichnis, an dem ich interessiert bin, ist X:\Windows\System32\ , also möchte ich sehen, ob die folgenden Dateien existieren:

%Vor%

Wie kann ich dies über die Windows-Eingabeaufforderung tun? Auch (aus Neugierde) wie würde ich dies mit bash oder einer anderen Unix-Shell machen?

    
Justin Voss 29.09.2008, 21:27
quelle

6 Antworten

9

In cmd.exe wird die FOR / F% Variable IN ( Dateiname ) ausgeführt Befehl sollte Ihnen geben, was Sie wollen. Dies liest den Inhalt von filename (und sie können mehr als einen Dateinamen sein) Zeile für Zeile, wobei die Zeile in% Variable (mehr oder weniger) platziert wird. Führen Sie eine HELP FOR in einer Eingabeaufforderung aus. Wenn niemand anderes ein Befehlsskript liefert, werde ich versuchen.

BEARBEITEN: mein Versuch für ein cmd.exe-Skript, das das angeforderte tut:

%Vor%

Beachten Sie, dass das obige Skript ein Skript sein muss; Eine FOR-Schleife in einer .cmd- oder .bat-Datei muss aus irgendeinem seltsamen Grund doppelte Prozentzeichen vor ihrer Variablen haben.

Nun zu einem Skript, das mit bash | ash | dash | sh | ksh arbeitet:

%Vor%     
tzot 29.09.2008, 21:38
quelle
9

Bash:

%Vor%     
JesperE 29.09.2008 21:37
quelle
2
%Vor%     
Zorantula 30.09.2008 17:26
quelle
1

In Windows:

%Vor%

(Dies ist vielleicht nicht der beste Weg, es zu tun; es ist eine Art, die ich kenne; siehe auch Ссылка )

In Bash:

%Vor%     
Adam Rosenfield 29.09.2008 21:34
quelle
1

Bitte beachten Sie jedoch, dass es bei Verwendung der Standard-Dateisysteme unter Win32 und * nix nicht möglich ist, die Atomarität der Operation zu garantieren, dh wenn Sie die Existenz der Dateien A, B und C überprüfen Prozess oder Thread könnte Datei A gelöscht haben, nachdem Sie es übergeben und während Sie nach B und C gesucht haben.

Dateisysteme wie Transaktions-NTFS können diese Einschränkung überwinden.

    
Mihai Limbășan 29.09.2008 21:38
quelle
1

Ich wollte den meisten der obigen Lösungen einen kleinen Kommentar hinzufügen. Sie testen nicht wirklich, ob eine bestimmte Datei existiert oder nicht. Sie überprüfen, ob die Datei existiert und Sie Zugriff darauf haben. Es ist durchaus möglich, dass eine Datei in einem Verzeichnis existiert, zu dem Sie nicht berechtigt sind. In diesem Fall können Sie die Datei nicht anzeigen, obwohl sie existiert.

    
JaredPar 29.09.2008 22:45
quelle

Tags und Links