Batch file 批处理文件脚本,用于将文件(文本文件中的输入行)从一个文件夹复制到另一个文件夹
我有一个文本文件示例(如下所示),其中包含文件夹中不同文件的名称 文件名1Batch file 批处理文件脚本,用于将文件(文本文件中的输入行)从一个文件夹复制到另一个文件夹,batch-file,copy,text-files,Batch File,Copy,Text Files,我有一个文本文件示例(如下所示),其中包含文件夹中不同文件的名称 文件名1 文件名2 文件名3 现在,我必须使用这个文本文件作为输入,将D:\drive中的文件(文件名取自文本文件)复制到另一个文件夹。下面给出了我使用的批处理文件 @Echo Off SetLocal EnableDelayedExpansion Set n= 0 Set _InTextFile=D:\EXAMPLE.txt For /F "tokens=*" %%I IN (%_InTextFile%) DO ( S
文件名2
文件名3
现在,我必须使用这个文本文件作为输入,将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
不幸的是,这个批处理脚本没有像我预期的那样工作。它不会将特定文件复制到新文件夹位置。此外,它还被打印为
参数数无效
请尝试帮助我确定批处理脚本中的确切问题。如何修改此脚本以仅将D:\drive中的这些特定文件(如示例文本文件所示)复制到D:\New文件夹
提前感谢您的帮助 使用For.exe命令时出错。您可以键入/?在命令行中查看使用它的三种方法。使用它的方式是获取文件的属性,而不是文件中的数据
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 ...
4 XCopy命令没有使用从过程中获得任何好处。它现在写的方式也很危险,可能会移动你不想移动的文件。我可以通过修改我的代码来解决这个问题,如下所示
@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
set destinationfolder=D:\New folder
对于/F“delims=”(E:\EXAMPLE.txt)DO XCOPY/I/S/Y“%%a”“%destinationfolder%\%%~nxa”
这对我非常有效 谢谢你的建议。实际上,我试着先获取文件的属性,打印它,然后只做了一个xcopy语句来复制特定的文件。正如我在下面的回答中所解释的那样,只要修改for循环,我就能够轻松地解决这个问题。感谢您的建议、宝贵的时间和考虑。