Wie @ Scotts Link bespricht, *.xml
stimmt überein *.xml_
, da der 8.3-Name auf endet .XML
( dir /x
zum 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
move
es sich um einen internen Befehl handelt, ist ein separater Befehlcmd
erforderlich, 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
/s
Option, 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.