Batch file windows批处理文件重命名

Batch file windows批处理文件重命名,batch-file,rename,Batch File,Rename,我在Windows7中有一些文件,如AAA_a001.jpg,BBB_a002.jpg,CCC_a003.jpg 我正在尝试使用批处理将这些文件重命名为a001_AAA.jpg,a002_BBB.jpg,a003_CCC.jpg 只需在之间交换内容即可 我已经搜索了一段时间,但仍然不知道如何做到这一点。 有人能帮忙吗? 谢谢。使用REN命令 Ren用于rename ren ( where the file is located ) ( the new name ) 范例 ren C:\User

我在Windows7中有一些文件,如
AAA_a001.jpg
BBB_a002.jpg
CCC_a003.jpg
我正在尝试使用批处理将这些文件重命名为
a001_AAA.jpg
a002_BBB.jpg
a003_CCC.jpg

只需在
之间交换内容即可

我已经搜索了一段时间,但仍然不知道如何做到这一点。 有人能帮忙吗?
谢谢。

使用
REN
命令

Ren
用于
rename

ren ( where the file is located ) ( the new name )
范例

ren C:\Users\&username%\Desktop\aaa.txt bbb.txt
它将把aaa.txt更改为bbb.txt

您的代码将是:

ren (file located)AAA_a001.jpg a001.AAA.jpg

ren (file located)BBB_a002.jpg a002.BBB.jpg

ren (file located)CCC_a003.jpg a003.CCC.jpg
等等

IT WILL NOT WORK IF THERE IS SPACES!
希望能有帮助:D

@echo off
pushd "pathToYourFolder" || exit /b
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
  for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF"
)
popd

注意:名称在第一次出现
\uu
时被拆分。如果文件名为“part1\u part2\u part3.jpg”,那么它将被重命名为“part2\u part3\u part1.jpg”

我假设您知道
\u
之前和下划线之后的部分长度,以及扩展名。如果不这样做,它可能比简单的子字符串更复杂

cd C:\path\to\the\files
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3%
set q=%a:~4,4%
set b=%p_%q.jpg
ren %a %b
)
我只是想出了这个脚本,我没有测试它。查看并获取更多信息


如果你想假设你不知道
的位置、长度和延伸,我想你可以用for循环来检查
的索引,然后是
的最后一个索引,用一个
转到
的东西来包装它,让它工作起来。如果你愿意经历这样的麻烦,我建议你至少(为了你自己)使用WindowsPowerShell(或Cygwin),或者安装一种更高级的脚本语言(想想Python/Perl),无论哪种方式,你都会得到更多的支持。

正如Itsproinc所说,
REN
命令很有效

但如果文件路径/名称包含空格,请使用引号“”

例如:

ren C:\Users\&username%\Desktop\my file.txt not my file.txt
添加“”

希望它能帮助我用代码重命名

echo off

setlocal EnableDelayedExpansion

for %%a in (*.txt) do (
    REM echo %%a
    set x=%%a
    set mes=!x:~17,3!

    if !mes!==JAN (
        set mes=01
    )

    if !mes!==ENE (
        set mes=01
    )

    if !mes!==FEB (
        set mes=02
    )

    if !mes!==MAR (
        set mes=03
    )

    if !mes!==APR (
        set mes=04
    )

    if !mes!==MAY (
        set mes=05
    )

    if !mes!==JUN (
        set mes=06
    )

    if !mes!==JUL (
        set mes=07
    )

    if !mes!==AUG (
        set mes=08
    )

    if !mes!==SEP (
        set mes=09
    )

    if !mes!==OCT (
        set mes=10
    )

    if !mes!==NOV (
        set mes=11
    )

    if !mes!==DEC (
        set mes=12
    )

    ren %%a !x:~20,4!!mes!!x:~15,2!.txt 

    echo !x:~20,4!!mes!!x:~15,2!.txt 

)

我通过PowerShell找到了此解决方案:

dir |重命名项-NewName{$\u.name-replace“replaceME”,“mynewtext”}


这将重命名当前文件夹中所有文件的一部分。

PowerShell方式适合我,更易于理解和更改。但是,出现了一些错误,比如
rename item:Source和destination path必须不同
,直到我稍微更改了它。 要仅重命名文件夹的文件,请执行以下操作:

dir | Where Object{$.Name-match'replaceMe'}| Rename Item-NewName{$.Name-replace'replaceMe','myNewText'}

要递归重命名文件夹和子文件夹的文件,请执行以下操作:

获取ChildItem-Recurse | Where对象{$.Name-match'.Core.}|重命名项-NewName{$.Name-replace'.Core.','.Framework.}


只是在“\ux”之间交换内容
你明白问题是什么吗?我知道我应该用ren来重命名文件,但我的问题是,我不知道如何进行这些字符串操作,或者说我真的不知道:/请对交换内容进行一个很好的解释?有一种模式类似于
PART1\u PART2.EXT
,OP希望将某个目录中的所有文件重命名为
PART2\u PART1.EXT
。我猜:PI想在“u”之间交换内容,例如:AAA_BBB.txt=>BBB_AAA.txt这正是我需要的。谢谢还有一个小问题:它也交换了.jpg。例如part1_part2.jpg=>part2.jpg_part1Orz@raphael0914 - ??? 它非常适合我:part1_part2.jpg-->part2_part1.jpg这里发生了一些奇怪的事情,因为这损坏了文件名。也许-replace参数包含regex或其他内容
echo off

setlocal EnableDelayedExpansion

for %%a in (*.txt) do (
    REM echo %%a
    set x=%%a
    set mes=!x:~17,3!

    if !mes!==JAN (
        set mes=01
    )

    if !mes!==ENE (
        set mes=01
    )

    if !mes!==FEB (
        set mes=02
    )

    if !mes!==MAR (
        set mes=03
    )

    if !mes!==APR (
        set mes=04
    )

    if !mes!==MAY (
        set mes=05
    )

    if !mes!==JUN (
        set mes=06
    )

    if !mes!==JUL (
        set mes=07
    )

    if !mes!==AUG (
        set mes=08
    )

    if !mes!==SEP (
        set mes=09
    )

    if !mes!==OCT (
        set mes=10
    )

    if !mes!==NOV (
        set mes=11
    )

    if !mes!==DEC (
        set mes=12
    )

    ren %%a !x:~20,4!!mes!!x:~15,2!.txt 

    echo !x:~20,4!!mes!!x:~15,2!.txt 

)