DOS-spezifische XML-Dateierweiterung verschieben

452
A Box Of Cheese

Ich möchte meine .xml-Dateien von einem Verzeichnis (nennen wir es "from") in ein anderes verschieben (wir nennen es "in"), aber mit Wildcards werden unerwünschte Dateien wie .xml_ verschoben. Wie kann ich sie verschieben, während Sie die Erweiterung ".xml" genau angeben?

2
Mögliches Duplikat von [Datei in Archivordner in cmd mit Platzhaltern verschieben] (https://superuser.com/q/517486/173513) und [Wie interpretiert der Windows-Befehl RENAME Platzhalterzeichen?] (Https://superuser.com) / q / 475874/173513) jww vor 5 Jahren 0

2 Antworten auf die Frage

2
AFH

Wie @ Scotts Link bespricht, *.xmlstimmt überein *.xml_, da der 8.3-Name auf endet .XML( dir /xzum Anzeigen).

Glücklicherweise unterliegt der Befehl ForFiles nicht dieser Exzentrizität. Sie können also Folgendes verwenden:

forfiles /m *.xml /c "cmd /c move @path TargetDir\" 

Anmerkungen:

  • Da movees sich um einen internen Befehl handelt, ist ein separater Befehl cmderforderlich, um ihn aufzurufen (dies wäre bei einem externen Befehl (wie z. B. xcopy) nicht erforderlich forfiles /m *.xml /c "xcopy @path TargetDir\").
  • Es gibt eine /sOption, die durch Unterverzeichnisse rekursiert, aber das Zielverzeichnis nicht wiederhergestellt wird: Wenn der Quellbaum am Ziel abgeglichen werden soll, müssen Sie den Quellpfad parsen, um das richtige Zielverzeichnis zu finden. Das ist wahrscheinlich am besten in einer Batch-Datei:

    forfiles /m *.xml /c "cmd /c call mover.cmd @relpath TargetDir\"

  • Wenn Sie brauchen mover.cmd, schreibe ich es Ihnen als Skriptübung.

  • Ich habe nicht getestet, was passiert, wenn die Datei- oder Verzeichnisnamen Leerzeichen enthalten, aber ich würde Komplikationen erwarten.
Fantastisch, funktioniert wie ein Zauber in einer Batch-Datei, vielen Dank! A Box Of Cheese vor 5 Jahren 0
0
User025

Sie sollten XML-Dateien nur mit * .xml als Dateinamen verschieben können. Dies würde zu folgendem Befehl führen:
move C:\source\folder\*.xml C:\destination\folder\

Danke, aber das Problem sind wieder die Platzhalter (* in diesem Fall). Ich brauche etwas, das neben ".xml" alles herausfiltern würde, denn damit kommen die .xml_-Dateien rein A Box Of Cheese vor 5 Jahren 0
Das ist seltsam, ich habe einen Ordner als Quelle und Ziel erstellt. Im Ordner source hatte ich eine Datei test.xml und eine Datei test.xml_ und der Befehl, den ich gepostet habe, verschob nur die .xml und ließ die .xml_ alleine. Von Scott erwähnte https://superuser.com/questions/825615/windows-wildcards-with-files-having-more-than-3-zeichens -Erweiterungen können jedoch in Ihrem Fall zutreffen. Mein Test wurde in Windows 10 durchgeführt. User025 vor 5 Jahren 0
Ich verstehe, ich verwende Windows 7, so dass dies möglicherweise die Ursache des Problems ist. Kann findstr hier in einem Skript von Nutzen sein, das nur Dateinamen findet, die exakt mit .xml enden und sie verschieben? A Box Of Cheese vor 5 Jahren 0
Ich bin mir nicht sicher, wie Sie das mit findstr erreichen können. Es gibt jedoch ein Powershell-Cmdlet "Move-Item". Wenn Powershell eine Option ist, die funktionieren könnte, ist dies ein Powershell-Cmdlet. Der Befehl wäre `Move-Item -Pfad C: \ source \ folder \\ *. Xml -Destination C: \ destination \ folder \\` User025 vor 5 Jahren 0