【问题标题】:renaming files to a new name folder using batch script使用批处理脚本将文件重命名为新名称文件夹
【发布时间】:2015-04-14 18:37:01
【问题描述】:

已尝试使用此脚本重命名文件夹中的文件,但似乎不起作用

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=*.txt
SET new="c:\path to file that contains the listed names" 
for /f "tokens=*" %%f in ('dir /b *.txt') do (
   SET newname=%%f
   SET newname=!newname:%old%=%new%!
   move "%%f" "!newname!" 
)

我想要实现的是我的脚本应该在一个文件中选择一组列出的名称,并相应地重命名指定文件夹中的每个文件

【问题讨论】:

  • 为我工作。你的错误是什么?
  • 我刚刚编辑了脚本也许你应该再看看错误是什么
  • 如主题所述,我正在尝试使用文件中列出的一组名称重命名存储在文件夹中的文件。
  • 它不起作用!你有什么类型的错误?您的计算机崩溃、文件被删除或收到错误消息?您是否尝试过回显一些调试信息?

标签: batch-file rename


【解决方案1】:

测试这个脚本

 @echo off
    set prefix=new

    setlocal EnableDelayedExpansion
    for /f "delims=" %%a in ('dir *.txt /b') do (
                                      set name=%%~Na
                                      set newName=%prefix%!name:~0,1!X!name:~1,2!!name:~3!
                                      ren "%%a" "!newName!%%~Xa")

【讨论】:

    【解决方案2】:

    首先您说您要“根据”重命名每个文件(根据什么?),后来在评论中您说您尝试“在文件中使用一组列出的名称”重命名文件。这一点引起了几个额外的问题:这个文件的每一行都有一个名称吗? dir /b *.txt 列出的第一个文件必须与文件中列出的名字匹配,等等?还有其他选择吗? (为什么要使用move 命令进行“重命名”?)。

    由于目标不明确,我们不能说你的代码是否正确。但是,这就是您的代码所做的。假设第一个文件是“firstFile.txt”;那么这个部分:

    SET newname=%%f
    SET newname=!newname:%old%=%new%!
    move "%%f" "!newname!" 
    

    是这样执行的:

    SET newname=firstFile.txt
    SET newname=!newname:*.txt="c:\path to file that contains the listed names"!
    

    上一行从newname开头到“.txt”(即整个值)替换为"c:\path to file that contains the listed names",所以下一行是这样执行的:

    move "firstFile.txt" ""c:\path to file that contains the listed names"" 
    

    即使文件每边都包含一对引号,也应该正确地将文件移动到给定路径中。

    如果目标是“将文件夹中的文件逐一重命名为文本文件中列出的名称”,那么您必须在两个列表之间进行 合并:创建的文件列表由dir /b *.txt 和存储在文件中的名单。

    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET old=*.txt
    SET new="c:\path to file that contains the listed names" 
    < %new% (for /f "tokens=*" %%f in ('dir /b %old%') do (
       ren Read the next name from the redirected input file
       SET /P newname=
       ren "%%f" "!newname!" 
    ))
    

    如果这不是您想要的,请清楚地描述所需的过程...

    【讨论】:

    • 阿西尼。您对第二个选项非常正确,实际上我正在尝试重命名文件夹中的文件,这些文件的名称在文本文件中一一列出。所以我拿了你写的第二个脚本并运行它,但添加了暂停以查看错误是什么,我得到的错误是“访问被拒绝”。知道为什么它不起作用吗?
    • 您在SET new= 命令中是否正确写入了文件名?类似SET new="C:\My Documents\Files\fileList.txt"...
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 2021-04-07
    • 2013-04-22
    • 2010-09-20
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多