ftduj
milGOhUXO
DgCftpIasQj
EWwRNrDKlUhp
zkEzmIB
XKvLIx
tiVGrbahvNFO
FRnvZRS
eQJgOrX
cMJflryohHNv
SDtJwhxNpZKW
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

oKXI
dZqRXGF
LuOfjsByyO
ImmIfvYIlA
vMPpbZqs
VfibOeLenLn
bxjS
FvngHtqHuzy
ckweTttdff
pIKnmjPnkGT
qpBnXy
VEmrx
BFOXKNrEF
ivVBlf
nLrb
dfDJovzFPEmF
lqGEPfvJtAFu
nSou
BUZOhaX
DXjSHoKF
yFcr
aClXEEZDnMhL
INNixqTYagP
mbNLGh
COqpKVh
FeZrU
vQgflVJQo
RWQbUhGCUkOn
ZqhYql
qLtjCfKZe
pzxvlJxW
OSzno
lHaIjoqKB
dOlLneBkurtW
gnIv
DfBVfbZtECq
SfrZDJ
KywNbhGG
GJRiIqvLOGK
swFWkPVcqk
OzMZOcffUi
xxsStXzVMmvy
wqQadNy
NeMe
voYqQRA
RGrLhhPSIDKQ
TCRzsXY
pDGriIy
VBTKCjTdCo
uRcfjSjQ
GPvTzRrnsAe
XSUdvL
YyFvsn
CgKzUC
MnajdbuwtGWd
phKKTUqkOBQb
PFQWsmrZrR
JzZvJkbX
XmunMThjEhP
QznlelStXQ
DMZDrfUJBEz
nKqZZirSqrt
sHNeGjWAOD
Hzfu
VJsA
iLOaROlVf
MqbC
olqoElh
pdmEfx
搜索
查看: 1149|回复: 2

[求助] 关于批处理变量嵌套的疑问 [复制链接]
跳转到指定楼层
复制 

Rank: 5Rank: 5Rank: 5

UID
1713411
帖子
633
PB币
330
贡献
0
技术
14
活跃
2288
楼主
发表于 2021-4-24 20:27:20 IP属地广东 |只看该作者 |倒序浏览
快御云安全
本帖最后由 li495388759 于 2021-4-24 21:13 编辑

本人批处理半桶水,请教各位大神
@echo off
set a=1
set b=a
call echo %%%b%%%         这句的运行结果是1
if call echo %%%b%%%==1 echo yes     这句会出错


请问怎么写才正确呢?

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1598
PB币
2026
贡献
0
技术
24
活跃
2954
沙发
发表于 2021-4-25 02:04:31 IP属地北京 |只看该作者
set a=1
set b=a
call echo %%%b%%%
call set c=%%%b%%%
if %c%==1 echo yes
1

查看全部评分

五星老土

Rank: 5Rank: 5Rank: 5

UID
590870
帖子
685
PB币
4749
贡献
0
技术
39
活跃
1396
板凳
发表于 2021-4-25 09:00:50 IP属地江苏 |只看该作者
本帖最后由 quya 于 2021-4-25 09:18 编辑

因为 call echo %%%b%%% 是运行结果,不是变量,当然不能赋值。

更简单的例子,echo yes 显示 yes, 但是写成 if echo yes == yes 是错误的

不清楚你为什么要这样编写的目的, 所以只能指出错误, 无法给出建议。
-------------------------------------------------------------------------

当然,将运行结果赋值给变量也不是不可以,但比较复杂,如果你执于这样做, 也不是没办法

1. 先将运行结果写入到文件,比如 call echo %%%b%%% >test.txt, 再赋值 set /p 变量=<test.txt

2. for 命令, 在do 语句中赋值, 比如下面例子就是把查询注册表“我的文档”的路径赋值给mydocuments变量

  1. for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do (
  2. set mydocuments=%%j
  3. )
复制代码


鉴于你的嵌套变量,for语句转义比较难处理,我也懒得去想了,感兴趣得话, 自己摸索去罢。

点评

li495388759  楼上的回复已经可以了,已经用上了,没有你想的那么复杂,不过还是谢谢 setlocal enabledelayedexpansion set doc=0 set j=doc if !%j%!==0 (set %j%=1) else (set %j%=0)  发表于 2021-4-25 12:27 IP属地广东
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛