【问题标题】:How to batch transfer rename?如何批量传输重命名?
【发布时间】:2020-02-20 08:43:41
【问题描述】:

有两个文件夹,它们之间的文件数量相等。 我想应用一组名称;到另一组文件没有特定的顺序。继承名称,但保留扩展名。

输入文件为 .bmp 输出文件为 .ini(带有齿轮符号)。

例子:

 folder 1-  Flowers.bmp  ; folder 2- blank.ini
. To this:
 folder 1-  Flowers.bmp  ; folder 2- Flowers.ini

会有更多的文件,但相等。 .ini 文件都是副本。所以他们可能有一个通用名称和编号,如果这很重要的话。它们都会从另一个文件夹中的其他 .bmp 文件中分别接收一个名称。

通常我将两个文件夹都放在 Desktop 上。 我确保两个文件夹之间的文件数量相等。那将是一个常数。

我正在尝试简化一些琐碎的重复性日常任务。 我进行了搜索,但发现并没有真正的帮助。

@ECHO OFF
SET "vers=%~1"
IF "%vers%" == "" SET /P "vers=Enter Vers: "
FOR %%F IN (file_XX_*.*) DO CALL :process "%%F"
GOTO :EOF

:process
SET "name=%~nx1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET "name=!name:_XX_=_%vers%_!"
RENAME %1 "%name%"
ENDLOCAL

希望最终能找到解决办法。

【问题讨论】:

    标签: batch-file batch-processing batch-rename


    【解决方案1】:

    这不是最有效的方法,但考虑到您有限的批处理经验,我想一种可以理解的方法比优化的方法更好(使用类似数组的变量)。

    @echo off
    setlocal enabledelayedexpansion
    
    (for %%A in ("folder 1\*.bmp") do echo %%~nA)> "%temp%\names.txt"
    
    <"%temp%\names.txt" (
    for %%A in ("folder 2\*.ini") do (
      set /p "name="
      ECHO ren "%%A" "!name!.ini"
    ))
    

    第一个for 循环创建所需名称的列表(来自Folder 1)。修饰符 %%~nA 仅返回 name。

    第二个for 处理Folder 2 中的每个文件,并从先前为每个文件生成的文件中取一个名称。 这取决于两个文件夹中的文件数量是否相同,否则您可能会得到不希望的结果。

    我只是通过回显它来禁用实际的ren 命令。检查输出,仅当您满意时,删除ECHO

    【讨论】:

    • 不要使用 Doubleclick 运行它以进行故障排除。打开cmd 窗口并从那里运行它,这样您就可以看到任何错误消息。
    【解决方案2】:

    好的,这是一个稍长的版本,但它确保它获取每个文件夹的内容。

    注意您必须确保在第三行和第四行中正确指定了两个文件夹的路径:

    @echo off
    setlocal enabledelayedexpansion
    set "source=%userprofile%\Desktop\folder 1"
    set "destination=%userprofile%\Desktop\folder 2"
    set /a num=0
    for %%a in ("%source%\*") do (
      set /a num+=1
      set "fr!num!m=%%~na"
    )
    set /a oldn=!num!
    set /a num=0
    for %%b in ("%destination%\*") do (
      set /a num+=1
      set "to!num!r!=%%~nxb"
      set "ext=%%~xb"
    )
    pushd "%destination%"
    for /l %%i in (1,1,!oldn!) do ren "!to%%ir!" "!fr%%im!%ext%"
    popd
    pause
    

    一旦您对输出感到满意,您可以删除脚本底部的pause

    【讨论】:

    • 哇哦。谢啦。那行得通。我只是确保文件夹说文件夹 1 和另一个文件夹 2 。它奏效了。我很高兴。
    猜你喜欢
    • 2010-09-29
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多