重命名和批量-DOS移动文件(Rename and move files in batch-dos)

2019-10-17 03:37发布

我想重命名文件和使用批处理文件以下列方式将它们转移到一个库:

c:\jg_Folder_xy>
blabla01_000.bla --> blabla01_001.bla
blabla02_000.bla --> blabla02_001.bla
blabla03_000.bla --> blabla03_001.bla

c:\sj_Folder_mx>
blabla01_000.bla --> blabla01_002.bla
blabla02_000.bla --> blabla02_002.bla
blabla03_000.bla --> blabla03_002.bla

c:\an_Folder_kj>
blabla01_000.bla --> blabla01_003.bla
blabla02_000.bla --> blabla02_003.bla
blabla03_000.bla --> blabla03_003.bla

而且比所有转移到一个新的文件夹

c:\New_Folder>
blabla01_001.bla
blabla01_002.bla
blabla01_003.bla
blabla02_001.bla
blabla02_002.bla
blabla02_003.bla
blabla03_001.bla
blabla03_002.bla
blabla03_003.bla

任何人都知道什么是最有效的方法是什么?

注:文件夹的名字都只有一个共同的子串

Answer 1:

怎么做

下面是批一个简单的解决方案:

@echo off
setlocal enabledelayedexpansion
set "SRC_PATH=c:\jg_Folder_xy"
set "DEST_PATH=c:\New_Folder"
for %%f in ("%SRC_PATH%"\*.bla) do (
    set fname=%%~nf
    set fbase=!fname:~0,-4!
    set findex=!fbase:~-2!
    move %%f "%DEST_PATH%"\!fbase!_0!findex!%%~xf
)

注:此脚本必须在每个源文件夹分别运行(改变SRC_PATH每次)。 另外,您也可以修改for循环的双循环,就像这样:

for /d %%d in (*_Folder_*) do for %%f in ("%%d"\*.bla) do (

这样它会在所有需要的文件夹中的所有文件会自动遍历(在SRC_PATH线将不再需要)。

这个怎么运作

for循环遍历在源文件夹中的文件,并指定文件名(与完整路径)到%%f在每次迭代中。

set fname=%%~nf中提取的文件名并丢弃扩展。

set fbase=!fname:~0,-4! 获得所有,但最后4个字符( 丢弃“_000”)。
这实质上提取基本文件名,这是“blabla01”,“blabla02” ......在你的榜样。

set findex=!fbase:~-2! 从提取的最后2个字符fbase ,即运行标志。
假定运行指数正好是两个字符。

move命令重命名这些文件,并将其移动到目标文件夹。

希望这可以帮助。



文章来源: Rename and move files in batch-dos