2011-07-18 122 views
7

文件擴展名的名單說,我有以下目錄中的文件批處理文件遍歷與排除

  • /file.js
  • /file2.min.js
  • /file1.js

我怎麼能寫循環批處理使得所有「的.js」文件回升,但「.min.js」不和的.js文件名的輸出可以改爲追加.min。 js

如:

for %%A IN (*.js) DO @echo %%A "->" %%~nA ".min.js" 

在理想情況下產生以下,並注意file2.min.js不顯示在左邊。

  • file.js - > file.min.js
  • file1.js - > file1.min.js

感謝您的幫助。

回答

10

只要看看它是否已經包含.min.js

setlocal enabledelayedexpansion 
for %%f in (*.js) do (
    set "N=%%f" 
    if "!N:.min.js=!"=="!N!" echo %%f -^> %%~nf.min.js 
) 
+1

夢幻般的..工作的一種享受,謝謝! – Lukie

0

在過去,當我想要做類似的事情時,我使用了renamex腳本。這是例子:

 Usage: renamex [OPTIONS] EXTENSION1 EXTENSION2 

Renames a set of files ending with EXTENSION1 to end with EXTENSION2. 
If none of the following options are provided, renaming is done in the current 
directory for all files with EXTENSION1. 

    Where [OPTIONS] include: 
-v  --verbose print details of files being renamed 

-d  [directory] 
     --directory [full path] rename files specified in the directory 

-f  [filter] 
     --filter [wildcard] 
     use wildcard characters (* and ?) for renaming files 

-h  --help show this help 

    Examples: 
renamex htm html 
    (rename all .htm files to .html in the current directory) 
renamex -v log txt 
    (show verbose output while renaming all .log files to .txt) 
renamex -v -d "D:\images" JPG jpeg 
    (rename all .JPG files located in D:\images to .jpeg) 
renamex -v -d "D:\movies" -f *2011* MPG mpeg 
    (rename all .MPG files with 2007 in their names, in D:\movies to .mpeg) 
+0

在這種情況下,我不想重命名任何東西,我只是想根據我提供的輸出回顯列表文件到控制檯。 – Lukie

+0

'renamex'不被識別爲內部或外部命令,可操作程序或批處理文件。 – Joey

+0

@Joey - 哎呀,我添加了一個腳本的鏈接。 –

1

不,我不同意@喬伊的解決方案,但我認爲它不會傷害,如果我發佈了一個替代方案:

@ECHO OFF 
FOR %%f IN (*.js) DO (
    FOR %%g IN ("%%~nf") DO (
    IF NOT "%%~xg" == ".min" ECHO "%%f" -^> "%%~g.min.js" 
) 
) 
相關問題