2017-04-18 188 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 
相关问题