Batch file 使用带有白名单txt文件的批处理脚本复制某些文件

Batch file 使用带有白名单txt文件的批处理脚本复制某些文件,batch-file,copy,Batch File,Copy,我在使用白名单文本文件将某个文件复制到另一个文件夹时遇到问题 在folder1中,我有1.txt、2.txt、3.txt 我需要将oni 1.txt和3.txt复制到folder2中 在我的whitelist.txt中,我有一个c:\folder1\1.txt和c:\folder1\3.txt 如何使用批处理脚本对此问题进行复制??谢谢 @echo off setlocal enableextensions disabledelayedexpansion for /f "tokens=*

我在使用白名单文本文件将某个文件复制到另一个文件夹时遇到问题

在folder1中,我有1.txt、2.txt、3.txt 我需要将oni 1.txt和3.txt复制到folder2中

在我的whitelist.txt中,我有一个c:\folder1\1.txt和c:\folder1\3.txt

如何使用批处理脚本对此问题进行复制??谢谢

@echo off
  setlocal enableextensions disabledelayedexpansion
  for /f "tokens=* usebackq" %%f in ("c:\wherever\whitelist.txt") do (
    copy "%%~f" "c:\folder2"
  )
对于指定文件中的每一行,将该行读入变量%%f您的文件,并将指定文件的副本执行到folder2%%~f是变量的内容,不带引号,因为我们正在添加引号

已编辑-来自注释:whitelist.txt包含不可复制的文件

如果白名单中没有包含解决方案简单的路径,只需获取文件夹中的文件列表,并对照白名单检查不匹配的元素

@echo off
set "from=d:\folder1"
set "to=c:\folder2"
set "whitelist=c:\somewhere\whitelist.txt"

for /f "tokens=*" %%f in (
    'dir /b /a-d "%from%\*" ^| findstr /l /x /v /g:"%whitelist%"'
) do (
    echo copy "%from%\%%~f" "%to%"
)
但如图所示,白名单包含文件的路径。和dir命令不包括路径,除非使用/s,但它没有被指示为递归副本,因此,有必要生成具有路径的文件列表

@echo off

set "from=d:\folder1"
set "to=c:\folder2"
set "whitelist=c:\somewhere\whitelist.txt"

for /f "tokens=*" %%f in (
    'cmd /q /c "for %%x in (""%from%\*"") do (echo(%%~fx)" ^| findstr /l /x /v /g:"%whitelist%"'
) do (
    echo copy "%%~f" "%to%"
)

嗨,抱歉再问一次。如果我只是复制2.txt而不是1.txt和3.txt呢?我的错误=@user3145735:那么,关键文件是要复制的文件的白名单还是不复制的文件的黑名单?如果它是一个白名单,只需在其中包括任何你想复制。如果是黑名单,则需要更改代码。whitelist.txt包含不需要复制的文件,不列出的文件应复制。