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 Befehlcmderforderlich, um ihn aufzurufen (dies wäre bei einem externen Befehl (wie z. B.xcopy) nicht erforderlichforfiles /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.