2015-03-19 50 views
0

我對編程或腳本編程相當陌生,所以我希望我使用的術語是正確的。用多個「。」重命名多個文件在他們之內

1.我試圖用多個文件夾重命名多個文件。

2.我不知道該文件夾的名稱,我只能知道承載這些子文件夾中的文件夾,每個文件夾被分配不同的時間&日期戳

3.我不知道名稱的文件每個文件夾包含

4.In的每個文件夾中,該文件的名稱是完全一樣的,在其他文件夾

5. 我知道內的所有的文件擴展名文件夾 - 「.t

那麼什麼,我試圖做的是以下幾點:

原始文件:

文件夾名稱:FolderA

」 Log1000_1.1.1.1_Base.1.textlog .t「

」Log1000_1.1.1.1_Base.2.textlog.t「

文件夾名稱:FolderB中

「Log1000_1.1.1.1_Base.1.textlog.t」

「Log1000_1.1.1.1_Base.2.textlog.t」

通緝的結果:

文件夾名稱:2015年2月19日%3A224044

「Log1000_1.1.1.1_Base。 1.2015-02-19%3A224044.textlog

」 Log1000_1.1.1.1_Base。 2.2015-02-19%3A224044.textlog

文件夾名稱:1.2015-02-19%3A224060

」 Log1000_1.1.1.1_Base。 1.2015-02-19%3A224060.textlog

」 Log1000_1.1.1.1_Base。 2.1.2015-02-19%3A224060.textlog

等等......

我曾嘗試以下代碼:

cd C:\DataCollection\ClassOne 

REM Creating a list of all folders 

dir /b /a:d >>C:\DataCollection\ClassOne\tempfolderlist.txt 

for /R /F "tokens=*" %%A in (C:\DataCollection\ClassOne\tempfolderlist.txt) do (
     cd C:\C:\DataCollection\ClassOne\%%A 
     ren *.t *%%A.textlog 
) 

我有2個問題與上面的代碼

  1. 循環將僅輸入文件夾,變更1名文件的擴展名(和僅1個文件)並保留其他聯合國文件/聯合國修改的文件。

我可以認爲這是由於循環遍歷一次txt文件的每一行。

2.文件重命名過程出於某種原因出錯。

輸出文件看起來是這樣的:

「Log1000_1.1.1.2015-02-19%3A224044.textlog」

雖然是應該是這樣的:

Log1000_1.1.1.1_Base.1_2015-02-19%3A224044.textlog

任何人有任何想法或建議如何解決代碼或替代建議不同的?

謝謝大家

回答

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir\t w o" 
FOR /f "delims=" %%a IN ('dir /s /b /a-d "%sourcedir%\*.t" ') DO (
FOR /f "delims=" %%d IN ("%%~dpa.") DO (
    FOR /f "delims=" %%p IN ("%%~na.") DO (
    ECHO(REN "%%a" "%%~np.%%~nxd%%~xp" 
) 
) 
) 

GOTO :EOF 

你需要改變的sourcedir設置,以滿足您的具體情況。

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

此操作的方式是通過執行所選目錄中的*.t文件的目錄列表並將每個名稱應用於%%a

%%d收到驅動器+目錄+。所以%%d%%~nd)的名稱部分是文件父目錄的名稱。

%%p類似地接收該名稱部分只有文件的,所以%%p名稱部分是部分.textlog前和延伸部分是.textlog

將適當的部件連同所需的.一起拆下,重命名即可執行。

+0

感謝Magoo,代碼完美。 – 2015-03-19 10:04:39