我需要从子目录复制文件,然后使用批处理文件将其放置在特定的文件夹中。我已经使用下面的查询实现了
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)
答案 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
根据您的环境需要修改行2
,3
和4
上的路径,并根据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将在等待命令结束时提示“更多?”,以')'表示。