Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将文件从文件列表批量复制到文件夹列表_Batch File_Cmd - Fatal编程技术网

Batch file 将文件从文件列表批量复制到文件夹列表

Batch file 将文件从文件列表批量复制到文件夹列表,batch-file,cmd,Batch File,Cmd,我有两个文本文件…files.txt包含文件名列表和dirs.txt包含文件需要复制到的目录列表。 以下是需要复制文件的方式: File 1 ------------------------> Folder 1 File 2 ------------------------> Folder 2 File 3 ------------------------> Folder 3 如何使用批处理实现此功能?提前感谢…试试这个: @echo off setlocal e

我有两个文本文件…
files.txt
包含文件名列表和
dirs.txt
包含文件需要复制到的目录列表。
以下是需要复制文件的方式:

File 1 ------------------------> Folder 1  
File 2 ------------------------> Folder 2  
File 3 ------------------------> Folder 3  
如何使用批处理实现此功能?提前感谢…

试试这个:

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (files.txt) do (
set /p dir=
echo copy "%%~a" "!dir!"
)<dirs.txt
pause
@echo关闭
延迟扩展
对于(files.txt)中的/f“delims=“%%a”do(
设置/p目录=
回显副本“%%~a”“!dir!”

) 我终于找到了答案…多亏@foxidrive的回答。代码如下:

@echo off
setlocal enabledelayedexpansion
set /A i=0
for /F "usebackq delims==" %%a in (files.txt) do (
set /A i+=1
call set array1[%%i%%]=%%a
call set n=%%i%%
)
set /A i=0
for /F "usebackq delims==" %%a in (dirs.txt) do (
set /A i+=1
call set array2[%%i%%]=%%a
)

for /L %%i in (1,1,%n%) do call copy "%%array1[%%i]%%" "%%array2[%%i]%%"
这绝对不是最好的解决方案…但它确实有效

感谢大家的帮助。

请指定否决的原因…我需要提供其他信息吗?我不知道为什么否决了此问题(与其他一些问题类似),但此问题没有问题。每个文件夹中是否只有一个文件?不幸的是,这似乎不起作用。。这就是我得到的:
E:\>cmd.bat E:\>setlocal enabledelayedexpansion该命令的语法不正确。E:\>3
请参见上面的编辑-它只会将命令回显到屏幕上。您好@foxidrive…我尝试了您的编辑。但是,它正在将所有文件复制到
文件夹1
,这是
dirs.txt
中的第一项。
@echo off
setlocal enabledelayedexpansion
set /A i=0
for /F "usebackq delims==" %%a in (files.txt) do (
set /A i+=1
call set array1[%%i%%]=%%a
call set n=%%i%%
)
set /A i=0
for /F "usebackq delims==" %%a in (dirs.txt) do (
set /A i+=1
call set array2[%%i%%]=%%a
)

for /L %%i in (1,1,%n%) do call copy "%%array1[%%i]%%" "%%array2[%%i]%%"