批处理遍历文件夹并判断是否有指定文件的问题?
现在需求是这样的,获取pc的mac地址,将mac地址转换为小写,遍历指定的文件夹,判断是否有与转换为小写的mac同名的bat文件,有的话执行,没有就让程序等待十秒,在遍历...
现在需求是这样的,获取pc的mac地址,将mac地址转换为小写,遍历指定的文件夹,判断是否有与转换为小写的mac同名的bat文件,有的话执行,没有就让程序等待十秒,在遍历一次,这一次还是没有,抛出一个错误的提示信息。
现在第一和第二都实现了,卡在循环这边了,求大神不吝赐教。下面是我写的代码。
@echo off
:: 获取计算机的mac地址
cd /d "%~dp0"
for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|find "物理地址"') do (
for /f %%c in ("%%a") do set mac=%%c
)
set mac=%mac:-=%
echo %mac%
:: 将mac地址转换为小写
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set mac=%%mac:%%i=%%i%%
set name=%mac:-=%
echo %name%
:: 遍历指定文件夹,如果发现与name同名的bat文件,执行,否则等待5秒,重新刚才的动作,还是没有,抛出异常
set "folder=D:\code"
for /f "delims=" %%a in ('dir /a-d/b/s "%folder%\"') do echo '%%a'
pause 展开
现在第一和第二都实现了,卡在循环这边了,求大神不吝赐教。下面是我写的代码。
@echo off
:: 获取计算机的mac地址
cd /d "%~dp0"
for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|find "物理地址"') do (
for /f %%c in ("%%a") do set mac=%%c
)
set mac=%mac:-=%
echo %mac%
:: 将mac地址转换为小写
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set mac=%%mac:%%i=%%i%%
set name=%mac:-=%
echo %name%
:: 遍历指定文件夹,如果发现与name同名的bat文件,执行,否则等待5秒,重新刚才的动作,还是没有,抛出异常
set "folder=D:\code"
for /f "delims=" %%a in ('dir /a-d/b/s "%folder%\"') do echo '%%a'
pause 展开
4个回答
展开全部
::定义一个变量,是否已重复过
set flag=0
:: 标记
:CheckFile
:: 遍历指定文件夹,如果发现与name同名的bat文件,执行,否则等待5秒,重新刚才的动作,还是没有,抛出异常
set "folder=D:\code"
for /f "delims=" %%a in ('dir /a-d/b/s "%folder%\"') do echo '%%a'
:: flag = 0 表示没重复过
if %flag% == 0 (
echo 5秒后重试
:: ping 地址实现等待,5 为 5秒
ping -n 5 127.0.0.1 >nul
:: 改变变量,避免重复
set flag=1
:: 跳到检测文件前
goto CheckFile
)
pause
set flag=0
:: 标记
:CheckFile
:: 遍历指定文件夹,如果发现与name同名的bat文件,执行,否则等待5秒,重新刚才的动作,还是没有,抛出异常
set "folder=D:\code"
for /f "delims=" %%a in ('dir /a-d/b/s "%folder%\"') do echo '%%a'
:: flag = 0 表示没重复过
if %flag% == 0 (
echo 5秒后重试
:: ping 地址实现等待,5 为 5秒
ping -n 5 127.0.0.1 >nul
:: 改变变量,避免重复
set flag=1
:: 跳到检测文件前
goto CheckFile
)
pause
展开全部
123@echo offfor /f "delims=" %%a in ('dir /b/s/ad d:\Release d:\Debug')do echo rd /s /q "%%a" 2>nulpause
第一次运行后看显示是否正确,正确后删除第二行的echo后再次运行一次。
第一次运行后看显示是否正确,正确后删除第二行的echo后再次运行一次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
for /f "tokens=* delims=" %%i in ('dir /ad /b /s *') do (
if %~ni==Debug (del /a /f /s "%%~i\*.*")
if %~ni==Release (del /a /f/s "%%~i\*.*")
)
for /f "tokens=* delims=" %%i in ('dir /ad /b /s *') do (
if %~ni==Debug (del /a /f /s "%%~i\*.*")
if %~ni==Release (del /a /f/s "%%~i\*.*")
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c# python 30rmb帮写私信 先测后付
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询