我正在尝试构建一个脚本,可以将文件夹、子文件夹和内容从一个驱动器复制到备份驱动器。每个文件夹、子文件夹中都有多个文件。我需要满足的条件是,我只复制带有扩展名的文件,例如:“。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