批处理文件 - Attrib + r%Var1%

时间:2015-02-19 13:30:07

标签: batch-file attributes

我有一个无疑是愚蠢的问题。我需要将文件的属性更改为只读。我知道要用......

atrrib +r c:\somefile.txt

它有效。但是在我的程序中,我想使用变量代替事先建立的路径。现在,如果我写...

set File=c:\somefile.txt

attrib +r %File%

然后我收到一条错误,说“attrib”未被识别为内部或外部命令等。

但是,如果我事先回显%File%,那么我知道该文件的路径是正确的并且正确读取。

我的错误是什么?非常感谢!!!

编辑:

set File=Main.xaml
set Folder=C:\Users\yef03111\Desktop\His0164\WINDOW\ALS026-01~EDF
set Path=%Folder%\%File%

echo %Path%

但是,如果我将回声改为attrib + r而没有别的......

attrib +r %Path%

我得到'attrib'无法识别的错误。这是当前不起作用的示例。希望你能发现它的一些东西!

3 个答案:

答案 0 :(得分:3)

问题是您正在设置名为PATH的环境变量。这会覆盖包含PATH等可执行文件位置的系统attrib变量。它的工作方式是,为了找到要运行的程序,操作系统查找PATH变量并在其中列出的文件夹中搜索可执行文件,其中包含您尝试运行的程序的名称。当您更改PATH变量时,操作系统将无法再找到attrib命令。

将变量的名称从路径更改为filepath,它将起作用。

答案 1 :(得分:0)

我已经在Windows 7上使用Cmd测试了您的脚本。做一个款待,所以我无法重新创建您所看到的内容。

我在一个点上做了很多批处理脚本,我曾经使用标准的Windows记事本得到随机错误。告诉脚本中的问题尾迹是空格字符。如果您使用的是记事本,请切换到使用notepad ++写入此内容,看看是否仍然出现错误。

答案 2 :(得分:0)

Path是一个系统变量,它告诉CMD,Explorer和CreateProcess在哪里查找命令。

当您在废弃系统变量时,CMD不再在system32中查找attrib。等命令。

  

设置路径=%文件夹%\%文件%

作为一般规则,避免系统在命名您自己的东西时使用的可能名称。很多人会MyFileProgPath

如果当前目录是System32,也会始终找到像attrib这样的命令。始终首先搜索当前目录中的命令(程序)。我怀疑RunAs正在将当前目录设置为System32。