替换可能因字符串上的特定名称而异的文件名

时间:2019-05-07 13:32:46

标签: batch-file cmd

我想创建一个脚本来自动化流程,并成功地做到了。关键是,每次我想使用它时,都需要用新的字符串替换字符串中的文件名。我敢肯定有一种方法可以做到一次(也许使用通配符)。我是这件事的新手:p

什么都找不到。

move /y "\\enterprise\TCP\CLIENT\BASENAME.CHR" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.HED" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\CP\CLIENT\BASENAME.PRD" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.IDX" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.INF" "\\enterprise\PR\CLIENT"
move /y "\\enterprise\TCP\CLIENT\BASENAME.TAD" "\\enterprise\PR\CLIENT"

del \\enterprise\TCP\LOG\BASENAME.CHK
copy "\\enterprise\PR\CLIENT\BASENAME.HED" "\\enterprise\PR\CLIENT\BASENAME.NEW"

我想添加一个字符串来替换所有字符串中的所有BASENAME(扩展名必须与上面的相同),例如ABCD。每次我想运行脚本时,都可以节省将每个字符串的文件名从BASENAME更改为ABCD的时间。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

move /y "\enterprise\TCP\CLIENT\%~1.CHR" "\enterprise\PR\CLIENT"

,然后将abcd作为第一个参数提供给批次。用

执行批处理

yourbatchname abcd

并可能通过使用

进行改进
for %%a in (CHR HED PRD IDX inf tad) do move /y "\enterprise\TCP\CLIENT\%~1.%%a" "\enterprise\PR\CLIENT"

其中%%a将被括号中的每个字符串替换,%1被上述第一个参数替换

答案 1 :(得分:0)

我不太确定我能回答您的问题,但是您可以使用变量。

示例:

setlocal
set filename=%~1

move /y "\\enterprise\TCP\CLIENT\%filename%.CHR" "\\enterprise\PR\CLIENT"
...
copy "\\enterprise\PR\CLIENT\%filename%.HED" "\\enterprise\PR\CLIENT\%filename%.NEW"

然后您以如下方式调用批处理文件,例如myrename.cmd:

C:\> myrename.cmd BASENAME
C:\> myrename.cmd ABC
...

答案 2 :(得分:0)

如果我对您的理解正确,您是否要将所有BASENAME.*文件移动到ABCD.*并将它们移动到另一个文件夹?然后,您可以执行 myscript.cmd

ren "\\enterprise\TCP\CLIENT\%~1.*" "%~2.*"
move /y \\enterprise\TCP\CLIENT\%~2.* "\\enterprise\PR\CLIENT\"
del /Q "\\enterprise\TCP\LOG\%~1.CHK"
copy \\enterprise\PR\CLIENT\%~2.HED" "\\enterprise\PR\CLIENT\%~2.NEW"

然后运行它。

myscript.cmd BASENAME NEWNAME

然后,它将提取任何名为BASENAME的文件并将其重命名为NEWNAME(其中BASENAME和NEWNAME可以是您输入的任何内容。

或者,您也可以使用它来提示双击:

set /p basename=Enter name to replace:
set /p newname=Enter new name:
ren "\\enterprise\TCP\CLIENT\%basename%.*" "%newname%.*"
move /y \\enterprise\TCP\CLIENT\%newname%.* "\\enterprise\PR\CLIENT\"
copy \enterprise\PR\CLIENT\%newname%.HED" \\enterprise\PR\CLIENT\%newname%.NEW"
del /Q "\\enterprise\TCP\LOG\%basename%.CHK"

现在,您可以双击该文件,它将要求您输入。