排除没有扩展名的文件 - XCOPY 或 ROBOCOPY

排除没有扩展名的文件 - XCOPY 或 ROBOCOPY

我正在尝试构建一个脚本,可以将文件夹、子文件夹和内容从一个驱动器复制到备份驱动器。每个文件夹、子文件夹中都有多个文件。我需要满足的条件是,我只复制带有扩展名的文件,例如:“。TXT”, ”.log”等。文件夹的扩展名各不相同,因此很难将所有扩展名都写入文本文件中。我想尝试排除所有没有扩展名的文件,并复制所有有任何扩展名的文件,因为这是脚本的要求。我试过这样做,但没有成功。批处理脚本代码是: xcopy "source_folder" "destination_folder" /s /i /exclude:"\."

此外,我还尝试过复制所有文件,然后删除没有扩展名的文件,这在示例案例中有效,但不可行,因为它会在存储方面破坏网络。代码是:

xcopy "source_folder" "destination_folder" /s /i
del /s "destination_folder\*."

我对批处理脚本还很陌生,因此非常感谢任何建议/帮助。

答案1

此命令将忽略没有扩展名或只有一个字符的扩展名的文件,这在大多数情况下都应该有效:

robocopy source destination /xf *.?

file.ext copied
file.ex  copied
file.e   ignored
file     ignored

在具有特定名称的目录上运行 robocopy 的 Powershell 示例:

$Src = 'c:\source'
$Dst = 'c:\destination'

$Analysis = Get-ChildItem $Src -Directory -Recurse | 
  Where Name -like 'Analysis'

Foreach ($Folder in $Analysis) {
  # fix the destination path to be relative:
  $NewSrc = $Src -replace '\\','\\'
  $NewDst = $Folder.FullName -replace $NewSrc,$Dst

  # copy each Analysis folder using *.pdf
  Robocopy.exe $Folder.FullName $NewDst *.pdf
}

答案2

@echo off

set "_destiny=C:\The\Full\Path\To\Your\Backpu\Folder"

2>nul cd /d "C:\The\Full\Path\To\Your\Folder" || exit /b

"%__AppDir__%robocopy.exe" .\. "%_destiny%" /xf *.? /is /s /l /z /njh /nfl
 
"%__AppDir__%timeout.exe" -1 | exit /b 

相关内容