重命名和 robocopy 命令中的通配符进入批处理文件

重命名和 robocopy 命令中的通配符进入批处理文件

我正在尝试将一些日常工作自动化。我希望出现的提示是“你叫什么名字?”,然后将该答案用作变量,用于 REN 和 ROBOCOPY 等不同命令。我目前正在做以下事情。

set /p var1="What is your Name?"
cd C:\ProgramData\filepath\Users\
IF exist var1(brk_file) (
gotto :renamed)
else
(goto :repair)
:Repair
REN "var1\current" "current.old"
ROBOCOPY "var1\backup" "current" /e

现在,它们的名称将始终用于文件夹名称中,但可能包含版本号或 MD 或其他内容。例如,我的答案是“Cam”,但我想要重命名和复制的文件夹是“CamV10”

所以我想要类似的东西

if exist *var1*(brk_file) (
goto :renamed)
else
(goto :repair)
:repair
REN "*var1*\current" "current.old"
ROBOCOPY "*var1*\backup" "current" /e

这对我来说不起作用,任何建议都将受到欢迎。

答案1

这是一个 XY 问题。要解决 Y,您需要创建第二个问题,称为 X,依此类推。而询问 Y 是否还没有解决方案则更容易。

情况确实如此。这被称为环境变量。就您而言,您正在寻找用户变量。

输入setcmd你就会明白我的意思。

然后输入@echo My username is: %USERNAME% and my home is: %USERPROFILE%.
它将返回:

 My username is: John and my home is: C:\Users\John

无论如何,你的代码中有很多错误。你必须阅读,IF /?因为ELSE语句必须在同一行,IF除非你使用),否则它应该写在一行中,例如) ELSE (

另一件事:什么是(brk_file)

如果它是一个字符串,并且是的一部分var1,你必须逃避()喜欢

IF exist %var1%^(brk_file^)

或者你也可以用双引号括起来

IF exist "%var1%(brk_file)"

但老实说我不确定。
无论如何,文件路径中的这种符号永远都不是好事

相关内容