【发布时间】:2015-09-25 20:08:33
【问题描述】:
我在 D:\drive 的 4 个不同子文件夹中有 4 个文件,名称为 cp1_26_09_2015.txt、cp1_22_02_2015、cp1_28_09_2015 等,日期格式相同。
当我使用FOR命令列出目录和子目录中的所有文件时,我想逐个搜索文件。
然后它在 4 个不同的文件夹中列出了此文本文件的 4 个名称,但我希望将路径一一提取,以便我可以对每个文件一一执行操作。所以到目前为止我已经构建了这个:
SETLOCAL ENABLEDELAYEDEXPANSION
setlocal
SET /A MAXJ=1
SET /A J=1
set _T1=%date:.=%
set _year=%_T1:~-4,4%
set _month=%_T1:~-10,2%
set _day=%_T1:~-7,2%
cp1_26_09_2015.txt
set _prefix=cp1
PAUSE
FOR /F "usebackq tokens=*" %%i IN (`DIR /S /B D:\cp1*.txt`) DO ( IF NOT "%%~nxi"==**%_prefix%_%_year%_%_month%_%_day%.txt** (
SET XCOUNT_!J!=%%~i
SET MAXJ=!J!
SET /A J+=1
)
)
SET XCOUNT
SET /A J-=1
@echo COUNT OF FILES IS : %J%
PAUSE
现在的问题是,当我尝试在搜索中删除今天的日期文件时,文件名为 cp1_28_09_2015.txt,其中扩展名中的日期变量在 %_month%、%_year% 和 %_day% 中提供,这不是正在运行,报告语法错误。
【问题讨论】:
-
那么问题出在哪里?代替回声,做你的操作。
-
我想一一获取路径
-
现在我得到了
-
是的,您正在逐一获取路径。
-
不,不是。它正在通过回声将它们打印到屏幕上,但它正在单独打印每条路径。这就是
for... 的全部意义所在
标签: windows batch-file for-loop cmd