批处理文件-使用具有可变数量变量的xcopy循环吗?

drego5

我是一名律师助理,需要为进入的每个合同创建文件夹和文件。这些文件夹将仅按地址命名,并且内部将有2个空文件夹,2个准备好的文件,一个DOCX和一个TXT,需要修改名称中的地址。我保留了一个名为“ @”的示例文件夹,以使其位于文件夹列表的顶部。我编写了一个脚本,可以根据需要复制重命名的内容:

xcopy "@" "$VAR1" /e /i
cd "$VAR1"
rename "Deed - Blank.docx" "Deed - $VAR1.docx"
rename "Deed Prep.txt" "$VAR1 Deed Prep.txt"
cd..

这样可以节省一些时间,但是到目前为止,每当我需要使用它时,我都将其复制到NotePad窗口中,然后使用Control + H将“ $ VAR1”的所有实例替换为该地址。然后,我再次复制基本脚本,并复制Control + H和新地址。一切准备就绪后,我将命令窗口打开到根文件夹,然后粘贴命令。有时我们会获得3个新合同,有时会获得10个,但是通常情况有所好转,所以我知道我需要使其成为一个适当的Loop,以节省更多时间。

通过搜索,我现在知道我需要的是set /pfor /l但是..我只是不知道如何将它们放在一起。我需要能够以某种方式输入地址,因此无论是一次提示还是一次全部提示,或者将它们输入到主命令中,像script.bat "123 Happy St" "1600 Pennsylvania Ave" "32 John's Wall Dr"那样比现在做的要好得多。

提前致谢!

oo
@echo off
setlocal
:again
set "property=%~1"
if not defined property goto :eof

xcopy "@" "%property%" /e /i
cd "%property%"
rename "Deed - Blank.docx" "Deed - %property%.docx"
rename "Deed Prep.txt" "%property% Deed Prep.txt"
cd..

shift
goto again

前两行1)禁止echo执行控制台命令,2)确保在批处理结束时撤消对环境的任何更改。这样可以确保连续的批处理文件不会由于在同一会话中先前运行的批处理中建立的变量而相互影响。

标签again只是一个返回点(需要冒号)

set命令获取第一个参数,删除其引号,然后将结果分配给变量property

如果没有其他参数,property将被取消分配,因此退出批处理(冒号是必需的)

然后在您的例程中,property将变量名用括起来在命令中使用值%

最后,shift参数-丢弃%1并洗净剩余的,因此%2变为%1,依此类推。

然后您可以按以下方式运行批处理 script.bat "123 Happy St" "1600 Pennsylvania Ave" "32 John's Wall Dr"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章