这个批处理脚本不起作用,为什么?

时间:2014-12-11 12:11:59

标签: batch-file

我有以下脚本,它不起作用。我正在尝试创建4个文件,比较它们并保持最小,并删除剩余的,更大的3个文件。这就是我所拥有的:

@echo off
dir /s /b /A-D folder\ > list.txt
for /r folder %%a in (*.*) do (
   dime.exe -A SCANTYPE=Q -A SCANL=7 "%%a" "%%a.q"
   dime.exe -A SCANTYPE=Q -A SCANL=7 -A SCANM=21 "%%a" "%%a.q21"
   make.exe -A SCANTYPE=X -A SCANL=7 "%%a" "%%a.x"
   make.exe -A SCANTYPE=X -A SCANL=7 -A SCANM=21 "%%a" "%%a.x21"
      for %%b in ("%%a.q") do for %%c in ("%%a.q21") do for %%d in ("%%a.x") do for %%e in ("%%a.x21") do (
         if %%~zb LEQ %%~zc (del "%%a.q21") else (del "%%a.q")
         if %%~zb LEQ %%~zd (del "%%a.x") else (del "%%a.q")
         if %%~zb LEQ %%~ze (del "%%a.x21") else (del "%%a.q")
   )
for /F "tokens=*" %%b in (list.txt) do del /Q "%%b"
del list.txt

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

@echo off
    dir /s /b /A-D folder\ > list.txt
    for /r folder %%a in (*.*) do (
        dime.exe -A SCANTYPE=Q -A SCANL=7 "%%a" "%%a.q"
        dime.exe -A SCANTYPE=Q -A SCANL=7 -A SCANM=21 "%%a" "%%a.q21"
        make.exe -A SCANTYPE=X -A SCANL=7 "%%a" "%%a.x"
        make.exe -A SCANTYPE=X -A SCANL=7 -A SCANM=21 "%%a" "%%a.x21"
        for /f "skip=1 delims=" %%b in ('
            dir /a-d /b /os "%%a.q" "%%a.q21" "%%a.x" "%%a.x21"
        ') do del /q "%%b" >nul 2>nul 
    )

    for /F "delims=" %%b in (list.txt) do del /Q "%%b"
    del list.txt

代码中缺少右括号。文件大小检查背后的逻辑已转换为dir命令以获取大小排序列表,跳过第一个并删除其余列表。

答案 1 :(得分:-1)

我可能错了,但我认为你错了#{1}}。哈哈,老实说不了解其余部分。 >>