找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 86878|回复: 21

[其他] 批处理for打开就一闪,想问下为什么不会停留?

[复制链接]
发表于 2019-6-14 23:24:37 | 显示全部楼层 |阅读模式
最近在自学批处理 ,写一个简单的看看能得到怎么样的效果,但是打开就一闪,想问下为什么不会停留,还有如果想把echo %%i 的内容写到一个txt里,是不是在后面加一个>>a.txt就可以了,请各位大神指教,谢谢!!
  1. @echo off
  2. cd /d %~dp0
  3. for /f %%i in(123.txt) do echo %%i
  4. pause
复制代码
发表于 2019-6-14 23:57:35 | 显示全部楼层
  1. (for /f "delims=" %%i in ('type "123.txt"') do echo %%i)>"a.txt"
复制代码
 楼主| 发表于 2019-6-15 16:46:54 | 显示全部楼层
回复 2# zaqmlp


    感谢大神的回复,我想问下上面我那个有什么问题,因为我想看看每次参数后的结果,你这个加了delims结果就变了,谢谢!!
发表于 2019-6-15 16:52:58 | 显示全部楼层
回复 3# qhmpv
那就把"delims="去掉
 楼主| 发表于 2019-6-15 21:26:04 | 显示全部楼层
回复 4# zaqmlp


    你好,经过试验,(for不是内部命令,所以for不用加(),然后试验的结果为什么跟学的不一样,学习的内容是这样的:
for /f %%i in (a.txt) do echo %%i

还是先从括号执行,因为含有参数/f,所以for会先打开a.txt,然后读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合,


{“第1行第1列 第1行第2列 第1行第3列”, //第一个元素

“第2行第1列 第2行第2列 第2行第3列”, //第二个元素

“第3行第1列 第3行第2列 第3行第3列”}   //第三个元素


集合中只有3个元素,同样用%%i依次代替每个元素,然后执行do后面的命令。

具体过程:


用%%i代替“第1行第1列 第1行第2列 第1行第3列”,执行do后面的echo %%i,显示“第1行第1列 第1行第2列 第1行第3列”,

用%%i代替“第2行第1列 第2行第2列 第2行第3列”,执行echo %%i,显示“第2行第1列 第2行第2列 第2行第3列”,

依次,直到每个元素都代替完为止。

但是我编的是到空格为止就算一行内容完了,并没有第一行第一列,第一行第二列……
123.txt
@echo
title
color
cd
更改当前目录为批处理本身的目录(%0代表批处理本身,
for
for
if
xcopy
echo.成功复制"%%i"到"%%s"文件夹
)
)
)
pause
 楼主| 发表于 2019-6-15 21:29:41 | 显示全部楼层
然后我加了一个"delims=",居然显示的是所有内容,不是应该以空格为分割么??
发表于 2019-6-16 13:32:35 | 显示全部楼层
回复 1# qhmpv


但是打开就一闪,想问下为什么不会停留

代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索。
发表于 2019-6-16 13:34:45 | 显示全部楼层
回复 5# qhmpv


用%%i代替“第1行第1列 第1行第2列 第1行第3列”,执行do后面的echo %%i,显示“第1行第1列 第1行第2列 第1行第3列”,

这里是你自己猜的?还是在哪个教程里面看到的呢?
不使用 tokens 和 delims 的情况下,默认 %%i 只能获取到第一列
发表于 2019-6-16 13:35:38 | 显示全部楼层
推荐教程:

批处理for命令视频教程
http://bbs.bathome.net/thread-31727-1-1.html

批处理for命令从入门到精通以及配套练习题
http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-2336-1-1.html
发表于 2019-6-16 13:40:51 | 显示全部楼层
本帖最后由 miqilaosu 于 2019-6-17 15:44 编辑

回复 6# qhmpv


   in后面的空格哪里去了
 楼主| 发表于 2019-6-16 16:18:07 | 显示全部楼层
回复 8# Batcher


    我是在这里看的:https://blog.csdn.net/DavidHsing/article/details/1996180,看了想写一个简单的看看结果怎么样的,但出来的跟他教的好像不一样
 楼主| 发表于 2019-6-16 16:26:44 | 显示全部楼层
回复 9# Batcher


    管理员大神,我还想问下,  ( 023-0049   阀芯.dwg)   这样的文件名,我想根据前面023-0049这个数字把文件放到相应的文件夹里怎么表标:
for /f "delims=*/" %%i in ('dir /a-d/b "* *.dwg"') do   ?
发表于 2019-6-16 17:20:04 | 显示全部楼层
回复 12# qhmpv


    for /f "tokens=1,2 delims= " %%i in ('dir /a-d/b "* *.dwg"') do  echo,"%%i %%j"
发表于 2019-6-16 17:55:11 | 显示全部楼层
回复 10# miqilaosu


    不接分隔符可以取到整行
发表于 2019-6-16 17:55:49 | 显示全部楼层
回复 13# miqilaosu


    delims= 可以省略
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:01 , Processed in 0.022736 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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