批处理脚本:复制和重命名文件

时间:2015-10-08 07:13:48

标签: file batch-file

我在文件夹中有很多文件,例如某些文件:

  
      
  • myfile.11-11.txt
  •   

我想找到这个文件,复制并重命名它,即我想要两个文件,例如:

  
      
  • myfile.11-11.txt
  •   
  • myfile.22-22.txt
  •   

我跑:

copy .\*.11-11.txt .\*.22-22.txt

我得到了:

  
      
  • myfile.11-11.txt
  •   
  • myfile.11-11.22-22.txt
  •   

如何获得以下结果?

  
      
  • myfile.11-11.txt
  •   
  • myfile.22-22.txt
  •   

2 个答案:

答案 0 :(得分:0)

您需要在所选的所有文件上使用FOR命令进行迭代,并使用有趣的%%~语法解析获取的名称。见HELP FOR。试试这个

set src=11-11
set dest=22-22
set ext=txt
for %%a in (*.%src%.%ext%) do call :docp "%%a" "%%~na"
goto :eof

:docp
echo copy "%~1" "%~n2.%dest%.%ext%"

此代码对匹配*.11-11.txt的每个文件执行的操作是两次提取其名称部分%~n,首先是FOR循环,第二个是CALL ed代码。有效地,它与删除扩展名两次并且在没有.txt且没有.11-11的情况下到达名称的根目录相同。

测试后,删除echo命令。

答案 1 :(得分:-1)

set str=myfile
set newnum=22-22
copy *.11-11.txt %str%.%newnum%.txt

如果你需要做一些动态字符串创建,那么关于DOS字符串操作的文章就在这里:http://www.dostips.com/DtTipsStringManipulation.php