【发布时间】:2020-07-25 06:15:44
【问题描述】:
对于批处理文件和一般编程来说都是超级新手,所以任何帮助都会得到帮助; 我正在尝试根据用户输入复制和重命名文件,然后打开新文件。我的问题是,如果有重复,我希望它重新提示用户输入不同的名称。现在我有:
SET /P "dname=Type new sheet name, then press Enter:"
COPY "O:\master.xlsx" "O:\%dname%.xlsx" /V /-Y
START /D "O:" %dname%.xlsx
这适用于复制和重命名,但如果有重复,我会收到提示“你想复制 Y/N”,但如果我说不,它不会要求其他名称。 谢谢!
编辑 1: 我现在有这个:
SET /P "dname=Type sheet name, then press Enter:"
IF EXIST "O:\%dname%.xlsx" (
:RETRY
SET /P "dname=Error! There is already a file named %dname%. Please choose a new unique name:"
IF EXIST "O:\%dname%.xlsx" (
GOTO :RETRY
ELSE GOTO :COPY
)
) ELSE GOTO :COPY
:COPY
COPY "O:\master.xlsx" "O:\%dname%.xlsx" /V /-Y
而且它似乎工作可靠。有没有更好的方法通过循环来简化/优化它?还是这样就够了?
【问题讨论】:
-
没有内置的方法可以做到这一点。您必须为它编写一个脚本(具有 if exist 和您选择的生成唯一文件名的方法 - 最简单的方法是增加一个计数器,就像
explorer一样) -
您的新尝试(编辑)中的问题是您在带括号的代码块中使用了标签,但这不起作用;如果
goto ::RETRY运行执行没有“停留”在块中,它会将目标标签和之后的所有内容视为在块之外,其中) else goto :COPY是不允许的;这是批处理文件的一个巨大限制......
标签: batch-file duplicates copy file-rename