天天看点

从当前文件夹以及子文件夹中,批量移动指定名字的文件

■前言

今天接到一个对应,要不一部分文件作为处理对象外,并且备份这部分处理对象外的文件。

■对应方法

使用bat实现,不使用java

■实现的bat核心代码

for /f "delims= " %%I in (‘dir /b /s C:\XXX\XX\temp\*003.txt’) do move %%I C:\XXX\XX\bak\
           

■ 对于以上代码解释说明

for /f %%i IN (file) DO command

使用参数 /F 我们可以执行某些命令,在本次应用中,执行了移动文件的命令

for /f "delims= " %%i in (a.txt) do echo %%i

delims这个参数,=后面有一个空格,意思是再将每个元素以空格分割,默认是只取分割之后的第一个元素。

本次实现中,不要应该也没有问题,

(delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键)

for /f "toknes=5 delims=\" %%i in (a.txt) do echo %%i

使用tokens=5 取分割后的第5列

参考: https://www.cnblogs.com/yang-hao/p/6003923.html

■例子

-------------------------------------------

@echo off
cd /d C:\test\temp\
tree /F /A

dir /b /s C:\test\temp\*.txt
echo ====================
for /f "delims= " %%I in ('dir /b /s C:\test\temp\*66.txt') do echo %%I
echo =========================
for /f %%I in ('dir /b /s C:\test\temp\*66.txt') do echo %%I
for /f "tokens=5 delims=\\" %%I in ('dir /b /s C:\test\temp\*66.txt') do echo %%I
echo =========================
pause
           
从当前文件夹以及子文件夹中,批量移动指定名字的文件

运行效果如下

卷 Windows 的文件夹 PATH 列表
卷序列号为 B274-C2AD
C:.
|   test.bat
|
+---123
|       新建文本文档 (2).txt
|       新建文本文档6.txt
|
+---456
|       22.txt
|       新建文本文档66.txt
|
\---789
        sfss66.txt
        新建文本文档 (2).txt
        新建文本文档66.txt

C:\test\temp\123\新建文本文档 (2).txt
C:\test\temp\123\新建文本文档6.txt
C:\test\temp\456\22.txt
C:\test\temp\456\新建文本文档66.txt
C:\test\temp\789\sfss66.txt
C:\test\temp\789\新建文本文档 (2).txt
C:\test\temp\789\新建文本文档66.txt
====================
C:\test\temp\456\新建文本文档66.txt
C:\test\temp\789\sfss66.txt
C:\test\temp\789\新建文本文档66.txt
=========================
C:\test\temp\456\新建文本文档66.txt
C:\test\temp\789\sfss66.txt
C:\test\temp\789\新建文本文档66.txt
=========================
新建文本文档66.txt
sfss66.txt
新建文本文档66.txt
=========================
请按任意键继续. . .
           

-------------------------------------------