2017-04-18 144 views
0

我從另一篇文章中拿到下面的代碼。我相信它應該選取當前目錄文件夾並將其包含在進程的重命名部分中,但這似乎對我無效。批處理文件重命名文件並添加序列號到文件名

@ECHO OFF 
setlocal enabledelayedexpansion 
PUSHD "%~1" 
set inc=0 
FOR /f "delims=" %%a in ('dir /b /a-d') DO (
set /a inc+=1 
Echo Ren: "%%a" "%~n1!inc!%%~xa" 
Ren "%%a" "%~n1!inc!%%~xa" 
) 
POPD 

我有一個.txt文件,將被接收到一個文件夾每天命名和時間戳。例如如下:

FileNameA_20170418153000.txt

基本上我想修改上面的代碼重命名的文件:filenam0001.txt並繼續更新的序列號(其工作得很好)。

filenam0001.txt filenam0002.txt filenam0003.txt

任何幫助,將不勝感激。

回答

0

您需要手動添加前導零(添加一些零,然後切最後x個字符):

@echo off 
setlocal EnableDelayedExpansion 
set inc=0 
for /l %%a in (1,1,50) do (
    set /a inc+=1 
    set num=00000000!inc! 
    set num=!num:~-5! 
    echo !num! 
) 
+0

@Stephen我試過這個,雖然代碼執行沒有更新到現有的文件。爲了確保我在正確的道路上,你能告訴我前導零的目的嗎? –

+0

前導零是你想要的:'filenam0001.txt'等。不應該太難以實現它到你的代碼。 – Stephan

+0

@Stephen這就是我的想法。你需要接受我的道歉,因爲我相對較新。如果我回頭介紹我在原始文章中使用的那段代碼。該代碼將文件的名稱更新爲序號,即1.txt,2.txt,3.txt等。不知何故,我只需要將文本「Filenam」添加到正在生成的文件名的開始處,並將前導零置成「filenam0001.txt等。」 –

0

我修改你的代碼,以便插入前導零以簡單的方式...

@ECHO OFF 
setlocal enabledelayedexpansion 
PUSHD "%~1" 
set inc=10000 
FOR /f "delims=" %%a in ('dir /b /a-d') DO (
    set /a inc+=1 
    Echo Ren: "%%a" "%~n1_%%~na!inc:~1!%%~xa" 
    Ren "%%a" "%~n1_%%~na!inc:~1!%%~xa" 
) 
POPD