无忧启动论坛

标题: 批处理一个for语句中怎么把值赋给多个变量? [打印本页]

作者: bjay2008xmy    时间: 2021-6-12 20:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 江南一根葱    时间: 2021-6-12 21:02
@echo off
setlocal enabledelayedexpansion
set n=0
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 (
if exist %%i:\5566.TXT set /a n+=1&&set pan!n!=%%i
)
echo 找到第一个分区 %pan1%
echo 找到第二个分区 %pan2%
pause
作者: bjay2008xmy    时间: 2021-6-12 21:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 江南一根葱    时间: 2021-6-12 21:42
bjay2008xmy 发表于 2021-6-12 21:17
是这句setlocal enabledelayedexpansion起了作用吗

是的,这样才能动态赋值
作者: bjay2008xmy    时间: 2021-6-12 22:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: dos时代菜鸟    时间: 2021-6-12 22:07
本帖最后由 dos时代菜鸟 于 2021-6-12 22:08 编辑

这样 26个 分区都有 这个文件,也可以找出来。

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set file_name=5566.txt
  4. set n=0
  5. 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 (
  6.         if exist %%i:\!file_name! (
  7.                 set /a n+=1
  8.                 set pan!n!=%%i
  9.         )
  10. )
  11. for /l %%i  in (1,1,!n!) do (
  12.         if defined pan%%i echo 找到第%%i个分区 !pan%%i!:
  13. )
  14. pause
复制代码

作者: 江南一根葱    时间: 2021-6-12 22:56
dos时代菜鸟 发表于 2021-6-12 22:07
这样 26个 分区都有 这个文件,也可以找出来。

@echo off
setlocal enabledelayedexpansion
set n=0
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 (
if exist %%i:\5566.TXT (
set /a n+=1
set pan!n!=%%i:\
call call echo 找到第!n!个5566.TXT,赋值到变量pan!n!,在分区%%pan!n!%%
)
)
pause

方法很多的,就怕楼主看晕过去。


作者: dos时代菜鸟    时间: 2021-6-12 23:17
江南一根葱 发表于 2021-6-12 22:56
@echo off
setlocal enabledelayedexpansion
set n=0


作者: kkkssc    时间: 2021-6-12 23:31
本帖最后由 kkkssc 于 2021-6-12 23:48 编辑

@echo off
mode 120,50
set n=1
:loop
set pan=
for /f "tokens=%n% delims= " %%a in ("c d e f g x z") do (set pan=%%a)
if /i "%pan%a"=="a" goto end
echo %n%
if exist %pan%: (dir /s %pan%:\|findstr /i 5566.txt)
set /a n+=1
goto loop
:end
echo 检查完毕
pause
exit

全盘查找,慢慢等吧 哈哈,亲测可运行

作者: bjay2008xmy    时间: 2021-6-12 23:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: bjay2008xmy    时间: 2021-6-12 23:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: dos时代菜鸟    时间: 2021-6-13 00:18
慢慢来吧
批处理其实 不难,核心命令 没几个

setlocal 环境设置语句
for  循环语句
if   条件语句
set  赋值语句
goto 跳转语句
call    调用语句
echo 信息输出语句
exit   退出语句

我通常只记住有上面几个,而且还记不住内容,只知道有这么几个语句,然后需要的时候再查。
哈哈哈
作者: bjay2008xmy    时间: 2021-6-13 00:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: foxfirefox    时间: 2021-6-13 08:46
bjay2008xmy 发表于 2021-6-12 23:39
想把一个程序写得很完善不容易啊,真不懂的话就查,查不到就问

编程本来就是入门简单的很,实际应用就不是那么简单了。。。。。。
作者: dos时代菜鸟    时间: 2021-6-13 10:48
本帖最后由 dos时代菜鸟 于 2021-6-13 10:52 编辑
kkkssc 发表于 2021-6-12 23:31
@echo off
mode 120,50
set n=1

dir /s /b /a-d %pan%:\5566.txt

findstr 是外部命令,主要用于 字符串 查找,优势是 正则表达式,对于一般的 字符确认类操作,能用 内部命令的最好,因为有的系统可能没有这个外部命令。


作者: kkkssc    时间: 2021-6-13 13:40
dos时代菜鸟 发表于 2021-6-13 10:48
dir /s /b /a-d %pan%:\5566.txt

findstr 是外部命令,主要用于 字符串 查找,优势是 正则表达式,对 ...

有道理,,你这个命令更高效
作者: lbw2007    时间: 2021-6-15 14:10
感谢分享!学习了!
作者: 171222287    时间: 2021-8-8 18:08
新人看不懂
作者: dandd136    时间: 2021-8-28 01:27
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3