Windows 如何使批处理文件影响子文件夹?

Windows 如何使批处理文件影响子文件夹?,windows,for-loop,batch-file,cmd,Windows,For Loop,Batch File,Cmd,我有一个批处理文件,可以删除所有其他JPG文件。我希望它在运行时也能影响所有子文件夹 我不是一个程序员,所以如果这是一个新手问题,我道歉 以下是我目前的代码: @echooff setlocal for /r %%D in (.) do ( set "del=" for /f %%F in ('dir /b "%%D\*.jpg"') do if defined del ( del "%%D\%%F" set "del=" ) else set "del=1" )

我有一个批处理文件,可以删除所有其他JPG文件。我希望它在运行时也能影响所有子文件夹

我不是一个程序员,所以如果这是一个新手问题,我道歉

以下是我目前的代码:

@echooff

setlocal
for /r %%D in (.) do (
  set "del="
  for /f %%F in ('dir /b "%%D\*.jpg"') do if defined del (
    del "%%D\%%F"
    set "del="
  ) else set "del=1"
)

PAUSE

dir
中的
/S
开关使您可以遍历子目录,如下所示:

dir /?
...
  /S          Displays files in specified directory and all subdirectories.
...
因此,我建议您更换:

dir /b "%%D\*.jpg"
作者:


祝你好运

根据你的澄清,这就是你想要实现的目标吗:

@SetLocal EnableExtensions DisableDelayedExpansion
@对于/F“EOL=?Delims=“%%G In('Dir/B/S/A:d2^>NUL')Do@(Set“)
对于/F“EOL=?Delims=“%%H In('Dir/B/A:-D/O:N”%%G\*.jpg“2^>NUL”)Do@(
如果未定义,则删除(设置“\%%T”),否则删除/A/F“%%G\%%H”&设置“\=”)

你好,多米尼克!我刚刚尝试了这个,出现了以下错误消息。你知道我可能做错了什么吗?”文件名、目录名或卷标语法不正确。“您能解释一下“删除所有其他JPG文件”这一术语具体是什么意思吗?”?您的代码不会将任何文件放入特定的顺序中,尽管看起来它们是,它们不是,但您已经在使用允许排序的命令,因此建议您使用它。如果文件顺序无关紧要,您是否只是简单地删除树的每个子目录中
.jpg
文件的一半!所以我有一个文件夹,里面装满了名为00001.jpg、00002.jpg等的图片。。。我想做的是,运行这个程序会按数字顺序删除所有其他图像。例如,如果我有名为01、02、03、04的文件。。。10然后我想删除02、04、06、08和10。希望这有帮助!不,它不会,它只会引出更多的问题。您是想只保留奇数图像,还是数字并不重要?如果目录中包含
01
02
05
06
08
,会发生什么情况,是否要删除
02
06
?。那么这是一个完美的序列吗?你能保证每个文件名都是数字吗?并且有完全相同的字符数?(您应该知道,Windows不进行数字排序,它是按字母顺序排列的,即
1
10
11
2
22
3
等)。每个图像都以相同的格式(00001.jpg,00002.jpg…)一致地向上编号到10000范围。该名称方案没有任何偏差,尽管我可能会手动剪切段,因此,例如,我可能有10000个标记为00001.jpg-11000.jpg的文件,其中08000.jpg到08999.jpg的文件在之前被手动删除。要么删除所有奇数或偶数整数,要么按字母顺序删除其他图像。这更有意义吗?我上面的代码确实有效,按字母顺序删除其他jpg。但是,我想应用它,这样它也会在子文件夹中运行相同的过程
dir /S /b "%%D\*.jpg"