Your first mistake is using CMD.EXE. It makes no sense at all. Do I even explain why? It does nothing. You simply pass some command to it which you can perform directly. Therefore, remove "CMD /C" and never do it again. Instead, use the call
System.Windows.Process.Start("attrib", commandLine);
where
commandLine
is the rest of your string, the command line to "attrib".
Then, the brackets around concatenating string operands make no sense, totally superfluous. Then, there are not cases when hard-coded file names can be useful, but let's assume this is just preliminary experiments and you will later remove it.
What else. Ah, file names. You simply don't have these files. As simple as that. Reproduce all operation using CMD.EXE (for example), without your program and "/C", and then repeat it all programmatically. It should to the same.
Now, let me tell you that "attrib" operates on the file attributes which have become practically insignificant in the modern file systems. So, whatever you are doing to them may be just a waste of time. You are trying to make file hidden and system. Both attributes, optionally and routinely, can be ignored by any program, including file managers.
From the other hand, you still can use them. For example, you could temporarily mark files with some attributes in some multi-pass processing, but I would not do it either. If you explain the ultimate purpose of your activity, we can discuss possible solutions.
—SA