@echo on
set src=c:\test
set dst=d:\test
xcopy %src% %dst%
for /F "TOKENS=*" %%G in ('dir/b ^%src%\*.*^') DO set new=%%G
attrib +h "%dst%\%new%"
del "%dst%"
attrib -h "%dst%\%new%"
pause
来源: 文件1 file2的
目的地: file3的
我遇到的唯一问题是我不知道为什么只在for循环中读取file2,这会将属性h添加到文件中。我希望Source文件夹下的所有文件都添加了指定的属性。
我该如何解决?
答案 0 :(得分:2)
你得到你输入的内容:-)
您只需删除@echo off
即可调试批处理文件。
你的循环处理所有文件,并设置new
变量,但attrib +h
和其余部分在循环后执行,而不是在内部。
我假设您要先隐藏src文件夹中存在的所有文件,然后删除其余文件,然后取消隐藏所有文件。
但是这个块无法工作,因为它隐藏了一个文件删除了所有其他文件,然后再次取消隐藏文件。
attrib +h "%dst%\%new%"
del "%dst%"
attrib -h "%dst%\%new%"
你可以试试这个,它会隐藏所有必要的文件,然后删除其他文件,并取消隐藏所有文件。
@echo on
set src=c:\test
set dst=d:\test
xcopy %src% %dst%
setlocal EnableDelayedExpansion
for /F "TOKENS=*" %%G in ('dir/b ^%src%\*.*^') DO (
set "new=%%G"
attrib +h "%dst%\!new!"
)
del "%dst%"
attrib -h "%dst%\*.*"
pause
答案 1 :(得分:0)
没有
%
字符无法使用此^
必须使用%
如果要输出字符%
您必须写为%%