使用批处理文件通过日志记录将文件复制到子目录中

时间:2018-08-07 12:12:21

标签: batch-file cmd copy directory subdirectory

我需要从子目录复制文件,然后使用批处理文件将其放置在特定的文件夹中。我已经使用下面的查询实现了

FOR /R "SourceFolder" %%i IN (*.pdf, *.txt, *.doc) DO COPY "%%i" "DestinationFolder" /Y

我需要在日志文件中同时记录文件和路径。我尝试了以下代码来实现,但无法正常工作

FOR /R "SourceFolder" %%i IN (*.pdf, *.txt, *.doc) DO (COPY "%%i" "DestinationFolder" /Y echo %%i) >> logfile.log

FOR /R "SourceFolder" %%i IN (*.pdf, *.txt, *.doc) DO (COPY "%%i" "DestinationFolder" /Y echo %%i >> logfile.log)

FOR /R "SourceFolder" %%i IN (*.pdf, *.txt, *.doc) DO (echo %%i >> logfile.log COPY "%%i" "DestinationFolder" /Y)

2 个答案:

答案 0 :(得分:1)

这是一个示例批处理文件示例,可以帮助您:

@Echo Off
Set "Src=C:\Users\Venkatesh\Documents"
Set "Dst=D:\Backups\Venkatesh\Docs"
Set "Log=C:\Users\Venkatesh\Desktop\Output.log"
RoboCopy /S "%Src%" "%Dst%" *.doc *.pdf *.txt /XJ /NP /NC /LOG:"%Log%" /TEE
Pause

根据您的环境需要修改行234上的路径,并根据RoboCopy /?的输出选择最合适的选项

答案 1 :(得分:1)

接受所需的日志记录是否可以接受? “ @”将禁止回显“ for”命令,但是循环的每次迭代都将回显所产生的命令(使用1%-%i-直接在命令窗口中键入时,在批处理脚本中使用%% i):

@echo on
@for /R "src" %%i IN (*.pdf *.txt *.doc) do copy "%%i" "dest" /Y >> logfile.log

或者,有两种方法可以更精确地完成您的工作。 “&”是命令外壳程序命令分隔符:

for /R "src" %%i IN (*.pdf *.txt *.doc) do (copy "%%i" "dest" /Y & echo %%i) >> logfile.log

或者命令可以显示在单独的行上:

for /R "src" %%i IN (*.pdf *.txt *.doc) do (
  copy "%%i" "dest" /Y
  echo %%i
) >> logfile.log

在输入以“(”结尾的“ for”行之后,shell将在等待命令结束时提示“更多?”,以')'表示。