2016-03-01 36 views
0

我需要你的幫助。使用批次從文件名稱中刪除特定的字符串

我已經多次.txt files具有下列術語:

test-test-test-201602291545.txt

test-test-test-test-test-201602291540.txt

我想從文件名和最後的結果中刪除 「測試」 的子字符串應該是這樣的:

201602291545.txt

201602291540.txt

請讓我知道如何使用簡單的批處理文件來做到這一點。

回答

0

基本的問題是,你需要某種方法從文件名的開頭分割出所有的test-字符串。下面的代碼使用FOR循環與"delims=-"來做到這一點。

重複行可能可以改善。 dbenham可以(應該)在這裏響起。我做了一些搜索,但沒有找到任何東西。

警告:未經測試的代碼

SETLOCAL ENABLEDELAYEDEXPANSION 

SET "RESULT=" 

FOR /F "usebackq tokens=*" %%a IN (`DIR /B /A:-D "test-*.txt"`) DO (
    SET "RESULT=" 

    FOR /F "tokens=1-30 delims=-" %%b IN ("%%~a") DO (
     IF /I "%%b" NEQ "" IF /I "%%b" NEQ "test" (SET "RESULT=%%b") 
     IF /I "%%c" NEQ "" IF /I "%%c" NEQ "test" (SET "RESULT=%%c") 
     IF /I "%%d" NEQ "" IF /I "%%d" NEQ "test" (SET "RESULT=%%d") 
     IF /I "%%e" NEQ "" IF /I "%%e" NEQ "test" (SET "RESULT=%%e") 
     IF /I "%%f" NEQ "" IF /I "%%f" NEQ "test" (SET "RESULT=%%f") 
     IF /I "%%g" NEQ "" IF /I "%%g" NEQ "test" (SET "RESULT=%%g") 
     IF /I "%%h" NEQ "" IF /I "%%h" NEQ "test" (SET "RESULT=%%h") 
     IF /I "%%i" NEQ "" IF /I "%%i" NEQ "test" (SET "RESULT=%%i") 
     IF /I "%%j" NEQ "" IF /I "%%j" NEQ "test" (SET "RESULT=%%j") 
     IF /I "%%k" NEQ "" IF /I "%%k" NEQ "test" (SET "RESULT=%%k") 
     IF /I "%%l" NEQ "" IF /I "%%l" NEQ "test" (SET "RESULT=%%l") 
     IF /I "%%m" NEQ "" IF /I "%%m" NEQ "test" (SET "RESULT=%%m") 
     IF /I "%%n" NEQ "" IF /I "%%n" NEQ "test" (SET "RESULT=%%n") 
     IF /I "%%o" NEQ "" IF /I "%%o" NEQ "test" (SET "RESULT=%%o") 
     IF /I "%%p" NEQ "" IF /I "%%p" NEQ "test" (SET "RESULT=%%p") 
    ) 

    IF "!RESULT!" NEQ "" (
     ECHO RENAME "%%~a" !RESULT! 
    ) 
) 

如果「測試 - 」所需的文件名開頭的大概就像下面的一個更好的辦法後,不能出現。請注意,從RENAME命令中刪除ECHO之前,不會進行重複的名稱檢測。

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 

FOR /F "usebackq tokens=*" %%a IN (`DIR /B /A:-D "test-*.txt"`) DO (
    SET "V=%%a" 
    SET "RESULT=!V:test-=! 

    IF "!RESULT!" NEQ "" (
     IF EXIST "!RESULT!" (
      ECHO ERROR: Cannot rename %%a because !RESULT! already exists. 
     ) ELSE (
      ECHO RENAME "%%~a" !RESULT! 
     ) 
    ) 
) 
相關問題