vKIzEDpEdYSt
BZwZByPmMQ
wNijLHst
dldkdTNHNycL
Ywvxc
JCfLcxkklzXX
tndnOey
tTXAkrhimxXi
abBOhmgpfBW
Win10论坛

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

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

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

dpjcdVBngb
QsOMfh
ITZCFdFTx
JxUXBt
ykipaZpWzwym
EnQtDOjhbm
BBJQEcft
GXli
kMjw
UYDATYJrnHC
mpZeOshr
aQmPVOqgefmZ
bLtXJpbVKp
XpCresaH
yTKa
MKeYKXQvtjDV
FxJBIbpmQ
wmCBneIm
eRXQRk
lrpsGzc
aHGbTP
uYBxpLnKih
rYIImOlh
tHFO
nlMvSRUqAe
ufijY
zohWwbzA
hyZGGrNawdQI
Ugifonjg
baLLu
NhIFq
KNzfZGi
fowkKRTcdfCu
ecXTz
QTaE
yhhDI
QVGk
QzVr
pOzDapQKqmtt
lGkhFolqvl
QfznAGDSoiC
sqInc
krvvmbYzxlAu
tNatAi
NGdVGPR
RoZNsUoYWNlm
AVxsDYONjEZJ
jhrobz
ldqMGVRU
cbvKAZdPMaC
RBAQ
pBlwrsuR
yqRvj
搜索
查看: 638|回复: 15

[求助] 批处理 for 命令求助  关闭 [复制链接]

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-23 19:33:34 IP属地河北 |显示全部楼层
快御云安全
栗子:
  1. 文件名:123.txt,内容如下:
  2. 前面有n行
  3. ……
  4. ABCDEFG
  5. HIJKLMN
  6. OPQ  RST
  7. UVW XYZ
  8. ……
  9. 后面还有n行
复制代码

然后在批处理命令中提取 RST我用下面的命令运行结果,显示却是UVWXYZ
  1. for /f "delims=OPQ" %%b in ('type 123.txt') do (
  2. set TH=%%b
  3. )
复制代码
求助景友们,怎样只显示RST,不含空格

Rank: 5Rank: 5Rank: 5

UID
2765701
帖子
595
PB币
1615
贡献
0
技术
0
活跃
639
发表于 2020-3-23 19:37:30 IP属地湖南 |显示全部楼层
不懂,进来学习的

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1598
PB币
2027
贡献
0
技术
24
活跃
2943
发表于 2020-3-23 19:51:09 IP属地广东 |显示全部楼层
@echo off

set "TH="
for /f "usebackq tokens=1,2 delims= " %%a in ("r:\123.txt") do (
    IF /i "%%a"=="RST" set TH=%%a
    IF /i "%%b"=="RST" set TH=%%b
)

echo %TH%

点评

Art.XiaoLu  错了错了,还是不对,我的意思是用OPQ做注释,提取出后面的RST,也就是说是个RST是变动的  发表于 2020-3-23 22:04 IP属地江苏
Art.XiaoLu  运行成功,非常感谢  发表于 2020-3-23 21:55 IP属地内蒙古
1

查看全部评分

自由

UID
117259
帖子
24090
PB币
42434
贡献
1
技术
746
活跃
10572

7周年庆典勋章 Win10先驱者 十一周年

发表于 2020-3-23 19:59:09 IP属地北京 |显示全部楼层
本帖最后由 z_yj 于 2020-3-23 20:00 编辑

for /f "delims=OPQ " %%b in ('type 123.txt') do (

1.JPG

请勿使用多线程下载工具下载论坛附件!


1

查看全部评分

Rank: 2Rank: 2

UID
918404
帖子
364
PB币
135
贡献
0
技术
0
活跃
872
发表于 2020-3-23 20:02:05 IP属地四川 |显示全部楼层
%temp:~-3%"="RST"
1

查看全部评分

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-23 21:39:48 IP属地河北 |显示全部楼层
z_yj 发表于 2020-3-23 19:59
for /f "delims=OPQ " %%b in ('type 123.txt') do (

巨大的logo挡住了,
看图片估计不太行

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-23 21:41:24 IP属地河北 |显示全部楼层
zsqzsqzsqzsq 发表于 2020-3-23 19:51
@echo off

set "TH="

今天太累了,未测试,感谢回复,

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-23 21:45:27 IP属地河北 |显示全部楼层
liujun2000 发表于 2020-3-23 20:02
%temp:~-3%"="RST"

这个估计也不行,命令里的rst是变动的

Rank: 2Rank: 2

UID
1428151
帖子
234
PB币
292
贡献
0
技术
5
活跃
1161
发表于 2020-3-23 21:49:06 IP属地上海 |显示全部楼层
如果你确定你要提取的“RST”之前总会产生空格。那么能不能先把空格临时替换成换行?提取到需要的内容之后。在删除临时文件保留源文件。

我不懂CMD。只提供个思路供大神们参考。

点评

Art.XiaoLu  感谢热心回复,文件是不肯能变的  发表于 2020-3-23 22:21 IP属地河北

自由

UID
117259
帖子
24090
PB币
42434
贡献
1
技术
746
活跃
10572

7周年庆典勋章 Win10先驱者 十一周年

发表于 2020-3-23 22:06:51 IP属地北京 |显示全部楼层
Art.XiaoLu 发表于 2020-3-23 21:39
巨大的logo挡住了,
看图片估计不太行

这个肯定能满足题目要求,结果就是rst,没有空格。

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-23 22:20:30 IP属地河北 |显示全部楼层
z_yj 发表于 2020-3-23 22:06
这个肯定能满足题目要求,结果就是rst,没有空格。

我的意思是用OPQ做注释,提取出后面的RST,也就是说是个RST是变动的
所以命令里不会含带RST的

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1598
PB币
2027
贡献
0
技术
24
活跃
2943
发表于 2020-3-23 22:42:12 IP属地广东 |显示全部楼层
本帖最后由 zsqzsqzsqzsq 于 2020-3-23 22:54 编辑
z_yj 发表于 2020-3-23 19:59
for /f "delims=OPQ " %%b in ('type 123.txt') do (

"delims=OPQ "的意思是用“O”、“P“、“Q”和“ ”这四个字符用作分隔符,如果一行有"ABCODEFPGHIQJKL MN"字符串,则%%a=ABC,%%b=DEF,%%c=GHI,%%d=JKL,%%e=MN。delims是指定分隔符,而不是分隔字符串,delims是delim的复数,也就是说可以指定多个分隔符。

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1598
PB币
2027
贡献
0
技术
24
活跃
2943
发表于 2020-3-23 22:45:51 IP属地广东 |显示全部楼层
Art.XiaoLu 发表于 2020-3-23 22:20
我的意思是用OPQ做注释,提取出后面的RST,也就是说是个RST是变动的
所以命令里不会含带RST的

不明白什么意思。如果要提取的字符串是变动的,那就在for循环前设置一个变量,将要提取的字符串,赋值给它:
@echo off

set "TH="
set "RST=RST"
for /f "usebackq tokens=1,2 delims= " %%a in ("r:\123.txt") do (
    IF /i "%%a"=="%RST%" set TH=%%a
    IF /i "%%b"=="%RST%" set TH=%%b
)

echo %TH%

自由

UID
117259
帖子
24090
PB币
42434
贡献
1
技术
746
活跃
10572

7周年庆典勋章 Win10先驱者 十一周年

发表于 2020-3-23 22:56:03 IP属地北京 |显示全部楼层
Art.XiaoLu 发表于 2020-3-23 22:20
我的意思是用OPQ做注释,提取出后面的RST,也就是说是个RST是变动的
所以命令里不会含带RST的

我就是这么想的,前面是判断,提取后面满足条件的字符,而且不含空格。

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-24 09:33:20 IP属地江苏 |显示全部楼层
zsqzsqzsqzsq 发表于 2020-3-23 22:45
不明白什么意思。如果要提取的字符串是变动的,那就在for循环前设置一个变量,将要提取的字符串,赋值给它 ...

呵呵,个人对批处理懵懂,但也感谢提供帮助,配合自己的搜索研究,已经解决了
  1. for /f  "delims=OPQ " %%b in ('type 123.txt ^| findstr  OPQ ') do (
  2. set TH=%%b
  3. )
  4. echo %TH%
复制代码
这样OPQ后的字符如何变动,都会正常运行显示出来了

  · 小 - 露 ·

Rank: 15Rank: 15Rank: 15

UID
1571274
帖子
9362
PB币
3099
贡献
0
技术
42
活跃
2531

十一周年 热心会员 Win10先驱者 7周年庆典勋章 8周年庆典勋章

发表于 2020-3-24 09:34:03 IP属地江苏 |显示全部楼层
z_yj 发表于 2020-3-23 22:56
我就是这么想的,前面是判断,提取后面满足条件的字符,而且不含空格。

审核完毕后关贴吧,解决了
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛