■前言
今天接到一个对应,要不一部分文件作为处理对象外,并且备份这部分处理对象外的文件。
■对应方法
使用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
=========================
请按任意键继续. . .
-------------------------------------------