2014-11-14 89 views
-1

提前道歉。我研究了幾個類似的問題,並嘗試使用提供的腳本或shell命令,但它們不適用於我的特定問題。我認爲這是因爲大多數其他問題都涉及到文件夾名稱中的確切位置,或者刪除了一系列數字等。刪除部分批量文件夾名稱(類似於查找和替換?)

我在前面提供的批處理文件和shell命令中遇到困難的其他事情之一是他們沒有指定如何包含特定目錄。 (他們可能會假設用戶已經知道該把它放在哪裏了,我真的很新,所以我不確定,用前面批處理文件中的行嘗試這樣做是行不通的)。

我有幾千個文件夾,我想刪除文件夾名稱的一部分(如果只有Windows會做一個查找和替換文件夾名稱,因爲這基本上是我想要做的,找到每個我想要的文本字符串OUT並將其替換爲空白)。

這些文件夾都有獨特的名稱,但我想刪除的名稱部分基本相同。我不希望名稱內的任何文件受到任何影響。只有文件夾名稱。

例如:

  • 12345_A_9101112_Method_Names
  • 12355_393939_Method_NameB33
  • 12366_BC_1234_Method_Name

我想從文件夾名稱中刪除是「名稱在我的例子中所表示的文本字符串.. 「。在其中的一些中,我認爲那部分是名字中的一個或兩個下劃線,而不是末尾。還有大約8個不同的文本字符串我想要刪除(我猜我必須爲每個不同的名稱有不同的批處理文件?)。

正如您所看到的,文件夾名稱有所不同,它們的長度和名稱都不盡相同,直到要刪除的部分。

非常感謝您提前。

+0

有幾個批處理文件重命名是免費的,並能夠使用正則表達式來做你所需要的。只搜索谷歌的批處理文件重命名 – MiltoxBeyond 2014-11-14 18:50:54

+0

感謝Miltox,不幸的是,我們被限制下載任何第三方軟件(我工作的地方,它幾乎從字面上需要國會的行爲來允許任何事情)。這就是爲什麼我必須自己寫這些噩夢的原因。我正在逐漸學習,並計劃在本週末拿起一本教科書。但就目前而言,希望獲得一個半簡單的腳本。 :) – LWilson 2014-11-14 19:45:36

回答

1
@ECHO OFF 
SETLOCAL enabledelayedexpansion 
SET "sourcedir=U:\sourcedir" 
FOR %%q IN (name eman) DO (
FOR /r "%sourcedir%" /d %%a IN (*%%q*) DO (
    SET "dname=%%~nxa" 
    SET "dname=!dname:%%q=!" 
    IF NOT "%%~nxa"=="!dname!" ECHO(REN "%%a" "!dname!" 
) 
) 

GOTO :EOF 

這應該工作 - 您需要更改sourcedir的設置以適合您的情況。現在,它將刪除子字符串nameeman - 只需將額外的必需字符串添加到明顯區域的列表中即可。

爲了測試目的,所需的REN命令僅僅是ECHO驗證命令是否正確後,將ECHO(REN更改爲REN以實際重命名目錄。