Batch file 如何批量传输重命名?
两个文件夹之间有相等数量的文件。 我想应用一组中的名称;不按特定顺序复制到另一组文件。继承名称,但保留扩展名 输入文件为.bmp,输出文件为.ini(有齿轮符号) 例如: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文件都是副本。因此,他们可能有一个通用名称和编号,如果需要知道的话。这些
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