【注意】最后更新于 March 11, 2021,文中内容可能已过时,请谨慎使用。
使用bat批处理读取txt文件中的文件名list,并将文件复制到指定目录下。
需求
想要从有多个深层目录下的众多文件中挑选出部分文件,并且保留目录结构,一个一个去找比较麻烦,就写了这个批处理。
示例
例子中的注释已经比较详细了,直接看就能明白,使用时注意修改 txt文件名 和 目录路径。
test.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
::声明更改代码页为UTF-8
chcp 65001
@echo off
echo ------------------开始---------------------
:: for循环逐行读取test.txt
for /f %%i in (test.txt) do (
::设置本地为延迟扩展。其实也就是:延迟变量,
::开始与终止批处理文件中环境改动的本地化操作。
::在执行 Setlocal 之后所做的环境改动只限于批处理文件。
::要还原原先的设置,必须执行 Endlocal。
SetLocal EnableDelayedExpansion
::打印读取到的值到控制台
echo %%i
::设置变量str,并设置为%%i的值
set str=%%i
::替换str中的from为to
Set str=!Str:from=to!
::将替换后的值写到1.txt
echo !str!>>1.txt
::复制%%i 到 str,取消提示“是文件名还是目录名”,默认选择复制文件f,文件夹d,
echo f | xcopy %%i !str! /Y >>log.log
EndLocal
)
echo ------------------结束---------------------
::删除文件
del 1.txt
echo. & pause
|
test.txt
1
2
3
4
5
6
7
8
9
|
C:\test\from\1\1.txt
C:\test\from\1\11\11.txt
C:\test\from\1\11\111\111.txt
C:\test\from\2\2.txt
C:\test\from\2\22\22.txt
C:\test\from\2\22\222\222.txt
C:\test\from\3\3.txt
C:\test\from\3\33\33.txt
C:\test\from\3\33\333\333.txt
|

