无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8001|回复: 18
打印 上一主题 下一主题

[已解决] 批处理一个for语句中怎么把值赋给多个变量?

[复制链接]
跳转到指定楼层
1#
发表于 2021-6-12 20:24:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
2#
发表于 2021-6-12 21:02:10 | 只看该作者
@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

点评

是这句setlocal enabledelayedexpansion起了作用吗  详情 回复 发表于 2021-6-12 21:17
回复

使用道具 举报

3#
 楼主| 发表于 2021-6-12 21:17:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

4#
发表于 2021-6-12 21:42:21 | 只看该作者
bjay2008xmy 发表于 2021-6-12 21:17
是这句setlocal enabledelayedexpansion起了作用吗

是的,这样才能动态赋值

点评

感谢解答  详情 回复 发表于 2021-6-12 22:05
回复

使用道具 举报

5#
 楼主| 发表于 2021-6-12 22:05:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

6#
发表于 2021-6-12 22:07:19 | 只看该作者
本帖最后由 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
复制代码

点评

@echo off setlocal enabledelayedexpansion set n=0 m=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 e  详情 回复 发表于 2021-6-12 22:56

评分

参与人数 1无忧币 +3 收起 理由
being + 3 简洁,喜欢。

查看全部评分

回复

使用道具 举报

7#
发表于 2021-6-12 22:56:32 | 只看该作者
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

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

回复

使用道具 举报

8#
发表于 2021-6-12 23:17:54 | 只看该作者
江南一根葱 发表于 2021-6-12 22:56
@echo off
setlocal enabledelayedexpansion
set n=0

点评

想把一个程序写得很完善不容易啊,真不懂的话就查,查不到就问  详情 回复 发表于 2021-6-12 23:39
看哪一个简单就用哪个,复杂的难理解。毕竟也不是系统化学习的,什么都写得出来。  详情 回复 发表于 2021-6-12 23:36
回复

使用道具 举报

9#
发表于 2021-6-12 23:31:45 | 只看该作者
本帖最后由 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

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

点评

dir /s /b /a-d %pan%:\5566.txt  详情 回复 发表于 2021-6-13 10:48
回复

使用道具 举报

10#
 楼主| 发表于 2021-6-12 23:36:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

11#
 楼主| 发表于 2021-6-12 23:39:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

12#
发表于 2021-6-13 00:18:51 | 只看该作者
慢慢来吧
批处理其实 不难,核心命令 没几个

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

我通常只记住有上面几个,而且还记不住内容,只知道有这么几个语句,然后需要的时候再查。
哈哈哈
回复

使用道具 举报

13#
 楼主| 发表于 2021-6-13 00:33:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

14#
发表于 2021-6-13 08:46:09 | 只看该作者
bjay2008xmy 发表于 2021-6-12 23:39
想把一个程序写得很完善不容易啊,真不懂的话就查,查不到就问

编程本来就是入门简单的很,实际应用就不是那么简单了。。。。。。
回复

使用道具 举报

15#
发表于 2021-6-13 10:48:19 | 只看该作者
本帖最后由 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 是外部命令,主要用于 字符串 查找,优势是 正则表达式,对于一般的 字符确认类操作,能用 内部命令的最好,因为有的系统可能没有这个外部命令。

点评

有道理,,你这个命令更高效  详情 回复 发表于 2021-6-13 13:40
回复

使用道具 举报

16#
发表于 2021-6-13 13:40:37 | 只看该作者
dos时代菜鸟 发表于 2021-6-13 10:48
dir /s /b /a-d %pan%:\5566.txt

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

有道理,,你这个命令更高效
回复

使用道具 举报

17#
发表于 2021-6-15 14:10:22 | 只看该作者
感谢分享!学习了!
回复

使用道具 举报

18#
发表于 2021-8-8 18:08:36 | 只看该作者
新人看不懂
回复

使用道具 举报

19#
发表于 2021-8-28 01:27:16 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-2 01:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表