我正在尝试将一些日常工作自动化。我希望出现的提示是“你叫什么名字?”,然后将该答案用作变量,用于 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 是否还没有解决方案则更容易。
情况确实如此。这被称为环境变量。就您而言,您正在寻找用户变量。
输入set
cmd你就会明白我的意思。
然后输入@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)"
但老实说我不确定。
无论如何,文件路径中的这种符号永远都不是好事