如何将具有特定扩展名的文件从子目录移动到另一个目录,包括使用 CMD 创建文件所在的子目录?

德拉科

目录C:\Parent包含两个子目录。

\basis             //contains folders which contain .pdf and .txt files
\basis_ft          //empty

我想将所有*.txt文件从移动\basis\basis_ft但它们需要位于它们之前所在的完全相同的子目录中。

  • 前:
C:\Parent\basis\UD00\
 00000A00.pdf
 00000A0A.pdf
 ft00000A00.txt
 ft00000A0A.txt
C:\Parent\basis_ft\   //empty   
  • 后:
C:\Parent\basis\UD00\
 00000A00.pdf
 00000A0A.pdf
C:\Parent\basis_ft\UD00\
 ft00000A00.txt
 ft00000A0A.txt

有很多子目录,例如UD00包含不同数量的文件。

我目前的声明如下:

for /r "C:\Parent\basis\" %%x in (*.txt) do move "%%x" "C:\Parent\basis_ft"

但这只会将所有*.txt文件取出并放入文件夹basis_ft

你们有没有人知道如何做到这一点?

我想补充一点,我更喜欢在一个语句中执行此操作,而无需先创建一个文本文件来列出所有必需的内容,另一个文件使用此文件创建目录,然后再移动文件。最后,还有一个文本文件要删除。我已经这样做了,就像过去一样,但我渴望简化这个过程,因为我将需要更频繁地这样做。

点亮

我认为 ROBOCOPY 会做你想做的。使用 了解选项ROBOCOPY /?

ROBOCOPY /S /MOV C:\Parent\basis C:\Parent\basis_ft *.txt

如果您已准备好使用 PowerShell,则可以执行以下操作。当您确定将删除正确的文件时,请-WhatIfRemove-Item命令中删除

Copy-Item -Path 'C:\Parent\basis' -Destination 'C:\Parent\basis_ft' `
    -Filter '*.txt' -Recurse
Get-ChildItem -Path 'C:\Parent\basis' -Filter '*.txt' |
    ForEach-Object { Remove-Item -Path $_.FullName -WhatIf }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章