【发布时间】:2020-03-28 10:41:12
【问题描述】:
在检查目标文件夹的写入权限时,下面的批处理脚本有问题。
如果只有写保护的文件夹,它会很好地工作。但如果同时存在写保护文件夹和非写保护文件夹,它也会对写保护文件夹运行 xcopy。
我认为这与分配给“write_ok”的值有关,该值始终保持最后一个值。
但是我该如何解决呢?
这是我的代码:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set BackupDest=D:\backup
for /f "tokens=*" %%I in ('dir /a:d-h /b "%HomeDrive%\users\*" ^| findstr /x /i /l /v /g:"%~dp0exclude_users.txt"') do if exist "%BackupDest%\%%I\" (
echo -----------------------------------------
echo Processing user : %%I
echo -----------------------------------------
echo
:: checking write permissions
copy /y nul "%BackupDest%\%%I\.writable" >nul 2>&1 && set write_ok=1
if defined write_ok (
del "%BackupDest%\%%I\.writable"
xcopy "%%I\Desktop" "%BackupDest%\%%I\Desktop\" /e /i /y
xcopy "%%I\Documents" "%BackupDest%\%%I\Documents\" /e /i /y
) else (
echo Access refused ^(check permissions^)
)
)
pause
exit
感谢您的帮助。
【问题讨论】:
-
你忘了取消定义
write_ok,所以一旦它被定义,它就会一直被定义。
标签: windows for-loop batch-file variables set