批处理文件脚本将文件(文本文件中的输入行)从一个文件夹复制到另一个文件夹

时间:2017-12-11 11:48:50

标签: batch-file copy text-files

我有一个文本文件示例(如下所示),其中包含文件夹中存在的不同文件的名称。

  

FILENAME1

  文件名2

  Filename3

  .........

现在,我必须使用此文本文件作为输入,将D:\ drive中的文件(文件名取自文本文件)复制到另一个文件夹。我使用的批处理文件如下。

@Echo Off

SetLocal EnableDelayedExpansion

Set n= 0
Set _InTextFile=D:\EXAMPLE.txt

For /F "tokens=*" %%I IN (%_InTextFile%) DO (

Set /a n+=1

Set _var!n!=%%I

set VAR=init

for /f %%a in ('dir /b D:\%%I.asc') do set VAR=exists

if %VAR%==exists

xcopy * D:\New folder

)

Set _

EndLocal

cmd /k

不幸的是,这个Batch脚本没有按预期工作。它不会将特定文件复制到新文件夹位置。此外,它打印为

  

参数数量无效。

请尝试帮助我确定批处理脚本中的确切问题。如何修改此脚本以便仅将D:\驱动器中的这些特定文件(如示例文本文件中所示)复制到D:\ New文件夹?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

For.exe命令的使用出错。你可以输入For /?在命令行中查看使用它的三种方法。您使用它的方式是获取有关文件的属性而不是文件中的数据。

REM Im trying to get FileSize or some other info about the file itself.
For /F "tokens=*" %%I IN (%_InTextFile%) DO ...

REM Should be this to process the file line by line.
For /F "UseBackQ tokens=*" %%I IN (%_InTextFile%) DO ...
  1. 使整个脚本更安全"通过更多Dir.exe命令 明确\具体。将Dir / A-D / B设为甚至不列出文件夹。

  2. 如果%VAR%==存在则需要!Var!动态行为。

  3. 4 XCopy命令未使用从过程中获得任何好处。它现在写入的方式也很危险,可能会移动你不想移动的文件。

答案 1 :(得分:1)

我可以通过在下面给出的代码中进行修改来解决这个问题。

set destinationfolder=D:\New folder

FOR /F "delims=" %%a IN (E:\EXAMPLE.txt) DO XCOPY /I /S /Y "%%a" "%destinationfolder%\%%~nxa"

这对我很有用。