有没有一种方法可以编写批处理文件以使用set变量重命名文件?

时间:2019-09-18 17:51:49

标签: batch-file variables rename

我正在尝试创建一个批处理文件,该文件用于创建文件夹并将文件放置在这些文件夹中。我已经做到了,但是现在我想将文件重命名为一个设置变量(项目名称)

我尝试过重命名功能。

@echo off
SET x="Project Name"
md %x%\"Bid Proposals"
md %x%\"Reports"
md %x%\"Drawings"
md %x%\"Specifications"
md %x%\"Addendums"
cd /d  K:\ESTIMATING\2019 ESTIMATING\2019 BID-PROPOSALS\%x%\Bid Proposals
copy "filelocation\Bid Proposal - Template.docx" 
rename "Bid Proposal - Template" "%x% - Bid Proposal"

我希望它使用变量将文件重命名为项目名称。

它会复制并放置文件,但不会重命名。

1 个答案:

答案 0 :(得分:0)

引号过多。

尝试

@echo off
SET "pname=Project Name"
for %%a in ("Bid Proposals" "Reports" "Drawings" "Specifications"
 "Addendums") do md "%pname%\%%~a"
cd /d  K:\ESTIMATING\2019 ESTIMATING\2019 BID-PROPOSALS\%pname%\Bid Proposals
copy "filelocation\Bid Proposal - Template.docx" .
rename "Bid Proposal - Template" "%pname% - Bid Proposal"

使用语法SET "var=value"(值可能为空)来确保分配的值中不包括任何杂散的尾随空格。

我已将x更改为更有意义的内容。

for依次将每个 [在这种情况下,引用为] 值分配给%%a%%~a%%a中删除引号。

我相信copy将需要一个目的地。我添加了.,这意味着the current directory,因此文件"filelocation\Bid Proposal - Template.docx"应该以{{1​​}}的形式复制到当前目录

"Bid Proposal - Template.docx"将与文件名匹配,因此 from 名称可能应为`“ Bid Proposal-Template.docx”,而 to 名称为“% pname%-Bid Proposal.docx”

我相信rename的复数可能是Addendum