Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Windows批处理-基于通配符列出文件_Loops_Batch File_Window - Fatal编程技术网

Loops Windows批处理-基于通配符列出文件

Loops Windows批处理-基于通配符列出文件,loops,batch-file,window,Loops,Batch File,Window,我有一个小批量作业,需要根据一些通配符参数删除文件夹中的文件。删除功能可以工作,但我还需要将删除的文件记录在单独的日志文件中。 我的程序所做的就是循环通配符变量,并在运行del命令之前将它们组合在一起。 但是我如何列出所有要删除的文件呢 这是我的批处理程序: set source[0]="C:\WORK\1\" set source[1]="C:\WORK\2\" set source[2]="C:\WORK\3\" set NameStart[0]="e3" set NameStart

我有一个小批量作业,需要根据一些通配符参数删除文件夹中的文件。删除功能可以工作,但我还需要将删除的文件记录在单独的日志文件中。 我的程序所做的就是循环通配符变量,并在运行del命令之前将它们组合在一起。 但是我如何列出所有要删除的文件呢

这是我的批处理程序:

set source[0]="C:\WORK\1\"

set source[1]="C:\WORK\2\"

set source[2]="C:\WORK\3\"

set NameStart[0]="e3"

set NameStart[1]="e4"

set NameMid[0]=*

set NameMid[1]=

set NameEnd[0]=".gz"

set NameEnd[1]=*






date /T  >log.txt

time /T  >>log.txt

echo Delete commands to be executed : >> log.txt

echo Delete commands to be executed : 


Pause


::loop folders

echo Delete Started...

for /F "tokens=2 delims==" %%s in ('set source[') do ( 

::loop files

    for /f "tokens=2 delims==" %%b in ('set NameStart[') do (   

    for /f "tokens=2 delims==" %%m in ('set NameMid[') do ( 

        for /f "tokens=2 delims==" %%e in ('set NameEnd[') do (     

                del %%s%%b*%%m*%%e   2> nul 

                echo del %%s%%b*%%m*%%e  >> log.txt         



        )
        )
    )
)

echo Delete Finished!

Pause

您的代码如此复杂的任何原因。

我被要求制作一个带有参数的批处理文件,以便用户可以输入要删除的位置和内容,这就是为什么我有所有这些用于循环的文件。当我使用del和通配符时,我发现的问题是,当文件找不到需要避免的匹配项时,我会得到一个“未找到文件”错误
del /s /q "C:\WORK\1\Yourpattern1" "C:\WORK\1\Yourpattern1.gz" "C:\WORK\2\Yourpattern1" "C:\WORK\2\Yourpattern1.gz" "etc" > logfile.txt