在 FOR LOOP 中排除文件名

在 FOR LOOP 中排除文件名

我在检查文件夹的 D 驱动器子目录的文件夹中有几个文件,名称为 cp1_2015_09_10.txt cp3_2015_09_11.txt kmps_2014_08_03.txt 和 cpms_2015_07_10.txt ksms_2015_10_07.txt。我想从 for 循环中删除文件名,例如 _2015_10_07 表示今天的日期

setlocal
SET /A MAXJ=1
SET /A J=1

set   year=%date:~10,4% 

set year=%year: =%
echo %year%

set  month=%date:~7,2%
set month=%month: =%

set  day=%date:~4,2%
set day=%day: =%

FOR /F "usebackq tokens=*" %%i IN (DIR /S /B D:\check\*.txt| find /v "_%year%_%month%_%day%")  DO ( 

    SET XCOUNT_!J!=%%~i
SET MAXJ=!J!
    SET /A J+=1)
SET XCOUNT

SET /A J-=1

@echo COUNT OF FILES IS : %J%
PAUSE

答案1

我想从 for 循环中删除文件名

FOR /F "usebackq tokens=*" %%i IN (DIR /S /B D:\check\*.txt| find /v "_%year%_%month%_%day%")  DO (

您的for语法有两点不正确:

  1. 您正在使用usebackq

    • 这意味着命令参数for 必须用反引号分隔`
  2. 您没有转义管道符号。

    • 用以下符号替换管道|符号^|

更正后的for命令:

FOR /F "usebackq tokens=*" %%i IN (`DIR /S /B D:\check\*.txt ^| find /v "_%year%_%month%_%day%"`)  DO (

您的批处理文件中可能还存在其他错误...


句法

FOR /F ["options"] %%参数 IN ('command_to_process') DO 命令

钥匙

选项:

usebackq 使用替代引用样式:

  • 在“filenameset”中,对长文件名使用双引号。
  • 使用单引号表示“要处理的文本字符串”
  • 使用反引号command_to_process

来源对于/f


转义符

^ 转义符。

在命令符号前添加转义字符可以将其视为普通文本。

&当对、\<>或这些字符进行管道传输或重定向时^|应在其前面加上转义字符。

例如^\ ^& ^| ^> ^< ^^

来源句法

进一步阅读

相关内容