Вы получаете то, что набрали: -)
Вы можете отладить пакетный файл, просто удалив @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