Batch file 从文本文件批量读取和重命名问题?

Batch file 从文本文件批量读取和重命名问题?,batch-file,scripting,rename,Batch File,Scripting,Rename,我是.bat文件的初学者,我正在尝试使用记事本中生成的列表重命名多个图形(.dwg)文件。记事本列表包含如下所示的图形编号列表: 01013-13000p001 06301-12550p001 等等 有数百个,我想从文本中提取这些数字,并将其放入一系列空白的dwg文件中,这些文件现在是通用名称(drawing.dwg、drawing(2).dwg、drawing(3).dwg等)。我只想到了一种读取文本文件的方法,但无法理解如何从文本文件中提取并用它重命名多个图形文件。以下是我在尝试从文本文件

我是.bat文件的初学者,我正在尝试使用记事本中生成的列表重命名多个图形(.dwg)文件。记事本列表包含如下所示的图形编号列表:

01013-13000p001
06301-12550p001
等等

有数百个,我想从文本中提取这些数字,并将其放入一系列空白的dwg文件中,这些文件现在是通用名称(drawing.dwg、drawing(2).dwg、drawing(3).dwg等)。我只想到了一种读取文本文件的方法,但无法理解如何从文本文件中提取并用它重命名多个图形文件。以下是我在尝试从文本文件读取内容并将其放入.dwg文件失败后得到的信息。我计划在所有相同的目录中解决这个问题,任何建议都将不胜感激。谢谢

@echo off
for /f "tokens=* delims=" %%x in (dwgNumbers.txt.txt) do echo %%x 
pause


(作为批处理行)做你想做的事?-请注意,
ECHO
关键字用于显示将要执行的操作。需要删除
echo
关键字才能实际执行
copy

这将获取
.txt
中的数字,用读取的数据重命名现有的
.dwg
文件。如果有更多的文件在
.txt
中编号,它将重命名,直到编号用尽为止,没有更多

for
循环使用
dir
命令获取文件列表,以避免重命名后落入
for
过滤器并重新处理的文件

此代码在重命名行中包含一个
echo
命令,以防止出现故障时数据丢失。当需要控制台的输出时,从重命名行中删除
echo
命令

@echo off

    rem Prepare environment
    setlocal enableextensions enabledelayedexpansion

    rem Read input file for numbers
    < dwgNumbers.txt ( 

        rem Process dwg files in directory
        for /f "tokens=*" %%f in ('dir /b *.dwg') do (

            rem Get number from input file
            set "number="
            set /p "number="

            rem If there is a number, rename the file
            if defined number echo ren "%%~f" "!number!.dwg"
        )
    )

    rem Clean
    endlocal
@echo关闭
rem准备环境
setlocal enableextensions enabledelayedexpansion
rem读取数字输入文件
是否所有二进制文件都相同?或者当前文件和新文件名之间是否存在关系?@foxidrive该图形文件只是一个空白的通用图形,我复制了20次,MS Windows在复制时分配了(1、2、3等)。然后我想从文本文件中提取名称,并用它们重命名复制的图形。是否按特定顺序?@除非它们没有特定顺序。它似乎不起作用,不会返回任何错误。但它所做的只是获取相同的drawing1.dwg(或“blank generic drawing.dwg”)并将其返回到命令prompte:C:\Users\MRG123\Desktop\New folder>echo copy/b“drawing1.dwg”01222-52003p001.dwg“copy/b”drawing1.dwg“01222-52003p001.dwg”由于某些原因,它不会重命名空白文件。HMM -你确信<代码>回声< /代码>是否如你所示,出现在提示之后?不应出现单词
echo
。不管怎样,如果删除
echo
,使该行显示为
…do copy/b..
,则文本文件中的
01222-52003p001.dwg
及其好友将从
绘图
.dwg`中创建,从而省去了创建20个副本的麻烦。或者有20个不同的“空白”文件需要复制吗?下面是我尝试执行的操作的屏幕截图,这可能会更好地解释它:您没有删除
echo
语句顺便说一句,它会将单个文件复制到每个新文件名,并且不需要所有重复的副本。它将只使用一个副本,并使用新的文件名生成一个额外的副本堆栈。
@echo off

    rem Prepare environment
    setlocal enableextensions enabledelayedexpansion

    rem Read input file for numbers
    < dwgNumbers.txt ( 

        rem Process dwg files in directory
        for /f "tokens=*" %%f in ('dir /b *.dwg') do (

            rem Get number from input file
            set "number="
            set /p "number="

            rem If there is a number, rename the file
            if defined number echo ren "%%~f" "!number!.dwg"
        )
    )

    rem Clean
    endlocal