Batch file 如何批量传输重命名?

Batch file 如何批量传输重命名?,batch-file,batch-processing,batch-rename,Batch File,Batch Processing,Batch Rename,两个文件夹之间有相等数量的文件。 我想应用一组中的名称;不按特定顺序复制到另一组文件。继承名称,但保留扩展名 输入文件为.bmp,输出文件为.ini(有齿轮符号) 例如: folder 1- Flowers.bmp ; folder 2- blank.ini . To this: folder 1- Flowers.bmp ; folder 2- Flowers.ini 将会有更多的文件,但数量相等。 .ini文件都是副本。因此,他们可能有一个通用名称和编号,如果需要知道的话。这些

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

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

例如:

 folder 1-  Flowers.bmp  ; folder 2- blank.ini
. To this:
 folder 1-  Flowers.bmp  ; folder 2- Flowers.ini
将会有更多的文件,但数量相等。 .ini文件都是副本。因此,他们可能有一个通用名称和编号,如果需要知道的话。这些文件都会从另一个文件夹中的其他.bmp文件中收到一个名称

通常,我的两个文件夹都位于桌面上。 我确保两个文件夹之间的文件数相等。这将是一个常数

我正试着把一些琐碎重复的日常工作串连起来。 我做了搜索,但我所发现的并没有真正的帮助

@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

希望最终找到解决方案。

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

@echo关闭
延迟扩展
(对于(“文件夹1\*.bmp”)中的%%A,执行echo%%~nA)>%temp%\names.txt

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

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

@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

不要通过双击运行脚本进行故障排除。打开一个
cmd
窗口并从那里运行它,这样您就可以看到任何错误消息。哇哦。谢谢你,伙计。成功了。我只是确定文件夹上写的是文件夹1,另一个是文件夹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