在批处理文件中使用变量作为文件路径目录

9
我有一个相对简单的问题,但是似乎无法在任何地方找到解决方案。
我正在批处理文件中使用一些变量,并且希望根据变量更改目录。
例如:
variable SET /Jan2000 = a
cd P:\Reference\Data\2000\%a%

当我运行批处理文件时,它只停留在“2000”文件夹中,不会像我要求的那样进入下面的文件夹。有没有办法让它正常工作?
编辑:根据请求,这是批处理文件中确切的代码。感谢您的帮助。
chdir /D P:\Reference\Data\2000
SET Jan2000 = a
chdir P:\Reference\2000\%a%   
dir
pause
3个回答

5
你需要设置你的变量。
例如: SET myVariable.
SET a=Jan2000
CD P:\Reference\Data\2000\%a%

抱歉,我已经设置了它,只是忘记在我的问题中输入它。 - Nathan Bush
看看你的SET命令。你正在创建一个名为Jan2000的变量并给它一个值a。然后,在下一行中,你试图访问一个名为a的变量。同时,去掉等号周围的空格...SET a=Jan2000 - aphoria
非常抱歉,如果这听起来很愚蠢,但我不确定你的意思。下面的文件夹名为“jan2000”,现在已分配给'a',那么为什么它不能移动到新文件夹中呢? - Nathan Bush
你的 SET 命令是反过来的。变量名应该在等号的左边,值应该在右边。看一下你的代码和我的代码之间的区别。 - aphoria

5
我无法对@aphoria的答案进行太多补充,但请尝试此方法。
set a=jan2000
pushd P:\Reference\Data\2000\%a%

如果在不同的驱动器之间切换目录时出现问题,可以使用pushd代替cd。我知道,/d开关是为此而设计的,但还是值得一试。


0

是的,我同意。我需要保留一个轮换一周的每日备份,因此我通过从系统日期中提取3个字母的星期几来创建一周中每天的文件夹:

set Today=%DATE:~0,3%
Echo  The day of the week is %Today%
If exist U:\%Today% rd U:\%Today% /s /q
md U:\%Today%

跟随不同的Robocopy命令,将内容写入U:\%Today%文件夹


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接