loops - 批处理文件循环直到显示某些文本
问题描述
目前有一个批处理文件,用于使用 takeown 和 icacls 命令替换 NTFS 权限,我已将这些命令添加到循环中,效果很好。
有没有办法在显示某个响应时退出循环?像“处理0个文件失败”或类似的东西?我正在使用的代码如下,希望这对其他人也有帮助。
@echo off
setlocal enabledelayedexpansion
for /l %%x in (1,1,1000) do (
echo Taking ownsership of Folders & Files - loop %%x
for /f "delims=" %%i in ('takeown.exe /R /A /F "F:\Shares\NetBackup Clients" /D N ^| findstr /i /C:"Failed processing 0 files"') do (
set "error=%%i"
if "!errorlevel!"=="0" goto :end
)
echo Applying permissions to filestore - loop %%x
icacls.exe "F:\Shares\NetBackup Clients" /grant "Domain\Group":F /grant "Domain\Group":R /T /C
echo Finished applying permissions to filestore - loop %%x >> C:\Loopy.txt
)
goto :eof
:end
echo %error%
非常感谢
解决方案
我认为您可能会以错误的方式遇到错误,因此您需要相应地调整它,但我们使用findstr
并且如果我们满足要求(errorlevel
is 0
)我们退出循环。
@echo off
setlocal enabledelayedexpansion
for /l %%x in (1,1,1000) do (
echo %%x
for /f "delims=" %%i in ('takeown.exe /R /A /F "\\fileserver\share\" /D N ^| findstr /i "Failed processing 0 files"') do (
set "error=%%i"
if "!errorlevel!"=="0" goto :end
)
echo Finished takeown >> C:\Loopy.txt
icacls.exe "\\fileserver\share\" /grant "Domain\Group":F /grant "Domain\Group":R /T /C
echo Finished icacls >> C:\Loopy.txt
echo Loop %%x >> C:\Loopy.txt
)
goto :eof
:end
echo %error%
推荐阅读
- html - ag-chart-tooltip 未显示工具提示 - 应用程序未获取 css
- java - 从 API 返回响应作为内部 JSON 对象
- python - 如何使用 keras 召回进行多标签分割
- javascript - javascript 函数表达式使用 const 而不是 let
- javascript - 使用时刻进行日期格式时获取一些随机字母
- mongodb - 连接到 Atlas MongoDB 时身份验证失败
- c# - 按值筛选 Firebase 子项 Xamarin.Forms
- ios - 如何在我的自定义目录中创建文件夹并提前在 /myapp/documents 中创建一个文件夹(当我构建应用程序时)?
- swiftui - 折叠列表中的 SwiftUI 导航
- arrays - jq - 删除 JSON 文件内所有数组中的重复条目