批量FOR循环压缩不包含字符串的文件

时间:2015-11-12 07:19:40

标签: windows batch-file

我正在使用html / js minifier来缩小我的文件dos命令正常工作。我需要更改此批处理命令以缩小文件名不包含字符串.min

的文件
@echo off
@setlocal enableextensions enabledelayedexpansion
for /r %%F in ('dir /b /a-d * ^| find /v /i "min"') do (



if /I %%~xF == .php html-minifier %%~dpnF%%~xF --minify-js -o %%~dpnF.min%%~xF

if /I %%~xF == .html html-minifier %%~dpnF%%~xF --minify-js -o %%~dpnF.min%%~xF

if /I %%~xF == .js uglifyjs %%~dpnF%%~xF -o %%~dpnF.min%%~xF



)

1 个答案:

答案 0 :(得分:1)

当您在处理文件扩展名之前包含.min时,您可以检索文件的名称,并从此字符串中检查扩展名

real file name                         testfile.min.js
file name without extension (%%~nF)    testfile.min
     includes its own extension                ^^^^

因此,您可以使用额外的for命令处理文件名

@echo off
    setlocal enableextensions enabledelayedexpansion
    for /r %%F in (
        *.php *.html *.js
    ) do for %%A in ("%%~nF") do if /i not "%%~xA"==".min" (
        if /I "%%~xF"==".php"  html-minifier "%%~fF" --minify-js -o "%%~dpnF.min%%~xF"
        if /I "%%~xF"==".html" html-minifier "%%~fF" --minify-js -o "%%~dpnF.min%%~xF"
        if /I "%%~xF"==".js"   uglifyjs      "%%~fF"             -o "%%~dpnF.min%%~xF"
    )