2014-02-28 90 views
1

在工作中,我們使用定製程序來搜索目錄樹並查找單個圖像文件。這些文件存儲在具有7位數名稱的文件夾中,以'18'開始 - 例如'1873456','1873457','1873458'等。我遇到的問題是去年某個時候創建​​的過程這些文件夾和填充他們的圖像達到'1899999' - 然後翻轉到'18100000'並繼續像超過4000個文件夾之前,它被捕獲並糾正。 我們使用的定製程序只能處理七位數的文件夾名稱。我想要做的是創建一個批處理文件,通過刪除名稱中的多餘'1'來重命名所有八位數文件夾,因此'18100000'變成'1800000'等等,直到'18104013'變成'1804013'。使用批處理文件從文件夾名稱中刪除單個數字

任何人都可以幫忙嗎?

+0

做舊18nnnnn文件夾中還存在嗎?要將18100000重命名爲1800000,後者不應該存在。如果它存在必須做什麼? –

+0

@MC ND如果您的意思是舊版本的'1800000'至'1899999',它們位於不同的文件夾中。他們被移動到存檔他們,並節省我們的服務器上的硬盤空間,所以這不會是一個問題。 –

回答

0

在基礎文件夾運行它,它不會改變任何文件夾。

將創建一個名爲renfile.bat.txt的文件,其中包含與filespec匹配的文件夾的重命名命令。在記事本中檢查它是否正常,然後將其重命名爲renfile.bat並運行它。

未經測試。

@echo off 
setlocal enabledelayedexpansion 
for /d /r %%a in (18??????) do (
    set "name=%%~nxa" 
    >>renfile.bat.txt echo ren "%%a" "!name:~0,2!!name:~3!" 
) 
+0

謝謝Foxi,這個作品幾乎就像一個魅力。它運行目錄併爲每個文件夾創建一個重命名命令,但是;但刪除我不需要的行並且運行其餘的行很簡單。 –

+0

Bewdy。如果將folderspec中的'18?'更改爲181,那麼它可以更好地定位文件夾。 – foxidrive

0

喜歡的東西

for /l %%x in (100000,1,104013) do (
    set oldsuffix=%%x 
    set newsuffix=%oldsuffix:~-5% 
    ren 18%%x 18%newsuffix% 
) 
+0

以這種方式將不會工作沒有延遲expasnions – npocmaka

+0

這不會在目錄樹上的作用。 – foxidrive

0
setlocal enableextensions enabledelayedexpansion 
for /d /r "c:\somewhere" %%f in (181?????) do (
    set "name=0" & set /a "name+=%%~nf" 2>nul 
    if !name! gtr 1899999 ren "%%~ff" "18!name:~-5!" 
) 
相關問題