复制文件列表(txt)

16 浏览
0 Comments

复制文件列表(txt)

我在Stack Overflow上看到了一些脚本示例,但没有一个提供了如何从.txt列表中读取文件名的示例。

这个示例很好,可以将所有文件从A文件夹复制到B文件夹。

xcopy c:\olddir\*.java c:\newdir /D /E /Q /Y

但是我需要像下面这样的东西,我可以实际填写源文件夹和目标文件夹:

 @echo off
 set src_folder = c:\whatever\*.*
 set dst_folder = c:\foo
 xcopy /S/E/U %src_folder% %dst_folder%

并且不是src_folder = c:\whatever\*.*,那些*.*需要是从txt文件中读取的文件列表。

File-list.txt(示例)

file1.pds
filex.pbd
blah1.xls

有人能告诉我如何做吗?

0
0 Comments

问题的原因是:无法找到文件,并且不知道在哪里添加"tokens=*"。

解决方法是:修改代码中的src_folder,将末尾的斜杠删除,或者按照最后一个示例中的代码格式进行修改。

0
0 Comments

问题的出现原因:

1. 使用了错误的语法:在if not exist命令中只能检查文件是否存在,不能检查文件夹是否存在。

2. 使用了无用的语法:在此语法中,usebackq是无用的,应该使用tokens=*来处理文件名中的空格。

3. 在XCOPY命令的参数周围没有使用引号。

解决方法:

1. 更改if not exist命令的使用方式,使用其他方法检查文件夹是否存在。

2. 替换无用的usebackq语法,使用tokens=*来处理文件名中的空格。

3. 在XCOPY命令的参数周围添加引号。

以下是修正后的代码:

off
set src_folder=c:\batch
set dst_folder=c:\batch\destination
set file_list=c:\batch\file_list.txt
if not exist "%dst_folder%" mkdir "%dst_folder%"
for /f "usebackq tokens=*" %%f in ("%file_list%") do (
    xcopy "%src_folder%\%%f" "%dst_folder%\"
)

通过以上修正,可以正确地将file_list.txt中列出的文件从src_folder复制到dst_folder。

0
0 Comments

问题的出现原因:

问题出现的原因是由于在使用Frank Bollack和sparrowt提供的答案时,包含了xcopy命令的/U开关。根据我的理解,/U意味着只有在目标位置已经存在这些文件的情况下才会进行复制,而对于我和原始提问者来说并非如此。可能原本应该使用的是/V开关用于验证,这样更合理。

问题的解决方法:

解决该问题的方法是移除/U开关。移除后,复制操作成功进行。

以下是解决该问题的代码示例:

off

set src_folder=c:\whatever

set dst_folder=c:\target

for /f "tokens=*" %%i in (File-list.txt) DO (

xcopy /S/E "%src_folder%\%%i" "%dst_folder%"

)

我在复制JPG文件时遇到了相同的问题。使用/U开关时没有任何文件被复制,但是在不使用/U开关时复制操作是成功的。

0