2016-06-16 107 views
-1

我試圖調整提供給類似問題的很多代碼,但我不認爲解決方案已發佈。我的問題是,我想刪除其餘的部分在最後一次存在2次!批量刪除部分文件名

我擁有的是一個文件夾:

number1-number2-number3 - some random text about the file.filetype 

NUMBER1將範圍從01到99
NUMBER2範圍從1-99999
number3的範圍從1-999可能有2位小數,與整數分開。

示例文件夾c:\temp\

15-1592-1 - file 1.doc 
15-1592-2 - this is file2.pdf 
15-1592-3 - this cointains subfiles.html 
15-1592-3.1 - sub1.jpg 
15-1592-3.2 - sub2.pdf 

我需要的是這裏的一切number3的結束後從文件名刪除一個文件夾,而且該文件類型不變。

例子:

15-1592-1.doc 
15-1592-2.pdf 
15-1592-3.html 
15-1592-3.1.jpg 

我明白這是安靜的可能讀取所有的答案相結合。

我缺乏的是編譯它的知識!

+0

?請通過[編輯](http://stackoverflow.com/posts/37863134/edit)分享您的代碼! – aschipfl

回答

1

要在其後刪除一切第一空間(不包括擴展名)
這是很容易的,如果使用調節劑(見for /?):你嘗試過什麼到目前爲止

@echo off 
setlocal enabledelayedexpansion 
for %%a in (??-*-*) do (
    for /f "tokens=1 delims= " %%b in ("%%~na") do (
    ECHO ren "%%a" "%%b%%~xa" 
) 
) 
+0

我沒有看到你的答案。聰明地使用通配符,我完全忘記了它們。 – elzooilogico

+0

是的。確實非常有用!謝謝! – TrueTom

0

其狡猾有點提取小數部分(如果存在的話),但應做的工作(可能需要一些象徵性的調整,以滿足您的需求)

@echo off 

setlocal enabledelayedexpansion 

set "source_path=c:\temp\*" 

for /f "tokens=1,* delims=." %%a in ('dir /b %source_path%') do (
    set "ext=" & set "decimal=" 
    for /f "tokens=1,* delims=." %%i in ("%%b") do (
    if "%%j" neq "" (
     set "ext=%%j" 
     for /f "tokens=1,* delims=- " %%d in ("%%i") do set "decimal=.%%d" 
    ) else (
     set "ext=%%i" 
    ) 
) 
    for /f "tokens=1-3,* delims=- " %%i in ("%%a") do (
    rem replace echo with operation you need 
    echo %%i-%%j-%%k!decimal!.!ext! 
) 
) 

endlocal