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

Batch File - Loop using xcopy with variable number of Variables?

我是一名律师助理,需要为每个进来的合同创建文件夹和文件。文件夹将仅以地址命名,里面有 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..

这节省了一些时间,但到目前为止,每当我需要使用它时,我都会将它复制到记事本中 window,然后使用 Control+H 将所有“$VAR1”实例替换为地址.然后我再次复制基本脚本,并使用新地址按 Control+H。当我拥有一切后,我打开命令 Window 到根文件夹,然后粘贴命令。有时我们会获得 3 个新合同,有时是 10 个,但事情通常都在好转,所以我知道我需要让它成为一个适当的循环以节省更多时间。

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

提前致谢!

@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 只是一个 return 点(需要冒号)

set 命令获取第一个参数,删除其周围的引号,并将结果分配给变量 property.

如果没有进一步的参数,property将被取消分配,所以退出批处理(需要冒号)

然后在您的例程中,通过用 %.

包围变量名来在命令中使用 property 的值

最后,shift 参数 - 丢弃 %1 并将剩余的打乱,这样 %2 就变成 %1,等等。

然后你可以运行批次为script.bat "123 Happy St" "1600 Pennsylvania Ave" "32 John's Wall Dr"