Wie kopieren Sie Dateien mithilfe einer Befehlszeile, wenn der Dateiname vier oder weniger Zeichen enthält?

Wie kopieren Sie Dateien mithilfe einer Befehlszeile, wenn der Dateiname vier oder weniger Zeichen enthält?

versuche, Dateien mit vier oder weniger Zeichen im Dateinamen mit einer bestimmten Erweiterung in einen neuen Ordner zu kopieren. Ich habe das jetzt schon mehrere Stunden lang versucht! Ich bin langsam frustriert. Ich habe den Kopierbefehl und die Platzhalter ? und * verwendet.

Antwort1

Wie AFH in Kommentaren anmerkte, funktioniert ein einfaches "COPY ????.ext" bei Dateinamen von vieroder wenigerZeichen. Bei der Musterübereinstimmung im Glob-Stil in DOS-basierten Systemen bedeutet * „0 oder mehr Zeichen“ und anscheinend ? bedeutet null oder ein Zeichen. Beachten Sie jedoch, dass diese Art der Musterübereinstimmung auf Anwendungsebene erfolgt – das heißt, Windows (und DOS) übergibt die Befehlszeile genau so, wie sie eingegeben wurde, an das auszuführende Programm. Wenn Sie „????.ext“ eingeben, ist das genau das, was der COPY-Befehl sieht.

Vergleichen Sie dies mit anderen Shells, mit denen ich gearbeitet habe, wie etwa in un*x (bash, tcsh usw.), wo der Befehlsinterpreter zuerst alle Musterübereinstimmungen erweitert und die vollständige Dateiliste an den Befehl übergibt. Das heißt, wenn Sie in diesen Shells „Datei kopieren.?“ eingeben, ruft die Shell „Datei kopieren.1 Datei.2 Datei.3“ auf, „Kopieren“ sieht normalerweise nie das wörtliche Argument „Datei.?“.

(Und deshalb war meine ursprüngliche Antwort falsch - ich habe sie mit einem Befehl getestet, dernichtErweiterung der Funktionsweise von CMD.EXE in Windows. Nur etwas, das Sie wissen sollten!)

Es gibt keine Möglichkeit in der normalen Windows-Konsole/Befehlszeile (das istnichtDOS übrigens!), um dies mit einem einzigen Befehl zu tun, da ? und * in Windows so funktionieren: ? entspricht einem einzelnen Zeichen und * entspricht so vielen wie möglich. In keinem von beiden können Sie eine Anzahl angeben. Aber wenn Sie eine Batchdatei verwenden, um jeden Befehl nacheinander auszuführen, können Sie denselben Effekt erzielen:

@echo off
copy "????.ext" "target folder"
copy "???.ext" "target folder"
copy "??.ext" "target folder"
copy "?.ext" "target folder"

Mithilfe verschiedener Batchdateitechniken können Sie es auch so ändern, dass es mit anderen Dateinamenlängen funktioniert, oder andere Zielordner verwenden usw.

Darüber hinaus steht Ihnen bei modernen Windows-Betriebssystemen höchstwahrscheinlich VBScript über den Windows Script Host zur Verfügung, und bei Win8 sollten Sie über PowerShell verfügen. Beide ermöglichen eine viel umfangreichere Programmierlogik, beispielsweise leistungsstarke reguläre Ausdrücke usw.

verwandte Informationen