Batch file 如何在嵌套在批处理文件中的for循环中使用参数2?

Batch file 如何在嵌套在批处理文件中的for循环中使用参数2?,batch-file,pdf,Batch File,Pdf,我无法使用第一个for循环中的第二个参数(%%b)来比较第二个for循环中的(if!count!GTR%%b),希望专家们能提供帮助,对不起,我的英语不好 文件text1.txt # # #Employee*.PDF,3 School*.PDF,4 Family*.PDF,5 文件夹c:\user\text xxxxxxxxx.pdf Employee1.pdf Employee3.pdf Employee2.pdf Employee4.pdf Employee5.pdf

我无法使用第一个for循环中的第二个参数(
%%b
)来比较第二个for循环中的(
if!count!GTR%%b
),希望专家们能提供帮助,对不起,我的英语不好

文件
text1.txt

    #       #
#Employee*.PDF,3
School*.PDF,4
Family*.PDF,5
文件夹
c:\user\text

xxxxxxxxx.pdf
Employee1.pdf
Employee3.pdf
Employee2.pdf
Employee4.pdf
Employee5.pdf
Employee6.pdf
Employee7.pdf
School1.pdf
School3.pdf
School2.pdf
School4.pdf
School5.pdf
School6.pdf
School7.pdf
总代码:

@Echo off
@SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=, tokens=1,2 eol=#" %%a in ('Type text1.txt') do (
    set /a count=0
    for /f %%x in ('dir C:\user\text\%%a /b') do (
        set /a count+=1
        if !count! GTR %%b ( 
            del "C:\user\text\%%x"
        )
    )
)
我无法在第二个for循环中使用
%%b
。 运行后输出
删除所有文件

但我只想删除:

Employee4.pdf
Employee5.pdf
Employee6.pdf
Employee7.pdf
School5.pdf
School6.pdf
School7.pdf
请帮帮我

我试过。。。添加
set/a标志=%%b
并更改比较条件=
if!计数全球技术法规!旗帜

 for /f "delims=, tokens=1,2 eol=#" %%a in ('Type text1.txt') do (
     set /a count=0
     set /a flag=%%b
     for /f %%x in ('dir C:\user\text\%%a /b') do (
         set /a count+=1
         if !count! GTR !flag! ( 
             del "C:\user\text\%%x"
         )
    )
)
但是输出<代码>!国旗!=5

等于其最终值
Family*.PDF,5

dir命令需要在
%%a之后加一个通配符

for /f %%x in ('dir /b "C:\user\text\%%a*"') do (
另外,从
text1.txt
读取的
%%b
不仅仅是数字,还附带了扩展名
.pdf

任用

  • if!计数GTR%%~nb
    去除扩展,或
  • 修改
    test1.txt
    ,使数字和分机之间有另一个逗号

您的第一个代码似乎工作正常(我添加了一些代码以添加演示文件,并在
dir
命令中做了一些小改动以匹配环境-适应您的需要):

输出:

Family1.pdf
Family2.pdf
Family3.pdf
Family4.pdf
Family5.pdf
Family6.pdf
Family7.pdf
School1.pdf
School2.pdf
School3.pdf
School4.pdf
School5.pdf
School6.pdf
School7.pdf
---------
#       #
#Employee*.PDF,3
School*.PDF,4
Family*.PDF,5
---------
Drücken Sie eine beliebige Taste . . . 
"D:\tmp\test\School4.pdf"
"D:\tmp\test\School5.pdf"
"D:\tmp\test\School6.pdf"
"D:\tmp\test\School7.pdf"
"D:\tmp\test\Family5.pdf"
"D:\tmp\test\Family6.pdf"
"D:\tmp\test\Family7.pdf"

哦,是的-我将《全球技术法规》更改为《全球技术法规》,以符合您的示例。

我不是100%同意您的观点。是否要匹配
text1.txt
内容中的文件是否存在于
C:\user\text
中?对不起,我发布了错误的文件text1.txt,我在上面编辑了它。好的,让我快速查看一下。所以你只想要编号最高的文件?是的,我只想要编号为
的文件!计数!>%%b
ok,但是
2.pdf
也比
1.pdf
大,所以你也想要吗?我试着将它编辑成
if!计数GTR%%~nb
但仍然没有成功,而且
test1.txt
已修复不断更改相关信息无助于为您的问题找到解决方案,但会让回答者感到沮丧。我会吸取经验,感谢您的建议如果我想
删除
文件,但不会
回音
,我应该怎么做?你想删除什么<代码>…1.pdf
…3.pdf
…4.pdf
…x.pdf
?那么用
del
命令替换
echo
命令如何?我想
删除根目录中的文件,而不是像以前那样
echo
。然后删除
echo
并键入
del/Q
Family1.pdf
Family2.pdf
Family3.pdf
Family4.pdf
Family5.pdf
Family6.pdf
Family7.pdf
School1.pdf
School2.pdf
School3.pdf
School4.pdf
School5.pdf
School6.pdf
School7.pdf
---------
#       #
#Employee*.PDF,3
School*.PDF,4
Family*.PDF,5
---------
Drücken Sie eine beliebige Taste . . . 
"D:\tmp\test\School4.pdf"
"D:\tmp\test\School5.pdf"
"D:\tmp\test\School6.pdf"
"D:\tmp\test\School7.pdf"
"D:\tmp\test\Family5.pdf"
"D:\tmp\test\Family6.pdf"
"D:\tmp\test\Family7.pdf"