【问题标题】:Batch File - Using List, move files from folders批处理文件 - 使用列表,从文件夹中移动文件
【发布时间】:2017-04-26 23:26:12
【问题描述】:

我在 INPUT 文件夹中有 3 个文件夹。
在 OUTPUT 文件夹中也有 3 个文件夹,像这样......

"INPUT"
 -Folder1
 -Folder2
 -Folder3

"OUTPUT"
 -Folder1
 -Folder2
 -Folder3

我有一个来自 INPUT\Folder1 的文件列表 (list.txt)。 我需要它从 list.txt 中读取每一行,如果作为文件存在,则将它们分别移动到 OUTPUT 目标文件夹。

这是我现在拥有的,但它会将所有文件复制到目标文件夹,而不仅仅是 list.txt 中的内容:

for /f %%f in (%CD%\list.txt) do robocopy %CD%\INPUT\folder1 
%CD%\OUTPUT\folder1
for /f %%f in (%CD%\list.txt) do robocopy %CD%\INPUT\folder2 
%CD%\OUTPUT\folder2
for /f %%f in (%CD%\list.txt) do robocopy %CD%\INPUT\folder3 
%CD%\OUTPUT\folder3

【问题讨论】:

  • 阅读robocopy /?(再次)。这是robocopy <sourceDIR> <destinationDIR> [<filemask>]。所以基本上你复制整个目录<number of lines in list.txt> 次。
  • 我不确定您是否意识到我正在尝试将文件从 list.txt 复制到单独的文件夹,但只复制列出的字符串而不是整个目录。我读过 robocopy,尽管我大部分时间都不熟悉它,但我正在学习和尝试。但我有点困惑,看看这将如何仅复制文本中列出的文件而不是所有文件。

标签: batch-file robocopy


【解决方案1】:

我想通了! 决定尝试 xcopy 并为文件名中的空格和特殊字符添加“delims=*”,它成功了!

For /f "delims=*" %%f in (list.txt) do xcopy "%CD%\INPUT\folder1\%%f" 
%CD%\OUTPUT\folder1

所以现在它只会复制 list.txt 中列出的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多