[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 lxzzr 于 2010-4-20 23:15 发表
代码:

@ECHO OFF
FOR /F "DELIMS=" %%A IN ('MORE +7^<%~FS0') DO ECHO %%A
PAUSE>NUL
COPY %0 TEST.TXT>NUL
MORE +7<"TEST.TXT"
PAUSE>NUL
EXIT
;忽略1

;忽略2

忽略 ";" 开头的行和空行



尚不清楚是FOR命令还是MORE,还是管道符的作用.. ...

for的作用,例如,你在for里强制eol= 为空格,就可以看到;的内容了。
(俺错了,偷偷改过,嘿嘿)

[ 本帖最后由 hanyeguxing 于 2010-4-20 23:36 编辑 ]
1

评分人数

    • qzwqzw: 无法强制设置eol为空,参考首帖PB + 10
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

新发现半角逗号 "," 也对 set 命令有影响, 用逗号作参数也可 set, 来输出各驱动器的最后工作目录, 对 set 命令变量识别的影响也和 38楼所述相同或相似

set, 可以显示工作目录, 让人想起了 dos 下, 逗号可以加强 dir 命令

[ 本帖最后由 neorobin 于 2010-4-20 23:26 编辑 ]

TOP

也来添加个

代码:
  1. @ECHO OFF
  2. FOR /F "DELIMS=" %%A IN ('MORE +7^<%~FS0') DO ECHO %%A
  3. PAUSE>NUL
  4. COPY %0 TEST.TXT>NUL
  5. MORE +7<"TEST.TXT"
  6. PAUSE>NUL
  7. EXIT
  8. ;忽略1
  9. ;忽略2
  10. 忽略 ";" 开头的行和空行
复制代码


尚不清楚是FOR命令还是MORE,还是管道符的作用....
1

评分人数

    • qzwqzw: 可以确认是FOR的默认eol所致,参照主题帖PB + 10

TOP

是不是需要把findstr的最后行问题在补充的详细一些?
http://www.bathome.net/viewthrea ... amp;page=2#pid32098

要不要介绍一个这个多余的空格?
http://www.bathome.net/viewthrea ... amp;page=4#pid28166
http://www.bathome.net/viewthrea ... amp;page=2#pid35901
1

评分人数

    • qzwqzw: 好的提议,正在考虑加入PB + 30 技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

双引号, 空格对 set 输出和变量识别的影响
详见 http://bbs.bathome.net/thread-7696-1-1.html
一. 半角双引号, 半角空格, 全角空格都可能导致变量名不能被 set 正常识别(其中部分原因和下面第二条有关)
二. 以下情形可以显示每个驱动器下的最后工作目录(排在空 set 命令显示的环境变量信息之前):
  1. set 后面是一个或若干个全角空格(可以紧跟)
  2. set 后面是一个双引号(不能紧跟) 或 一对半角双引号 " (一对双引号中间可以含有若干个半角或全角空格)
1

评分人数

    • qzwqzw: 非常不错的总结,考虑更新首帖的相关内容PB + 30 技术 + 1

TOP

  1. set /p test=<test.txt
复制代码
要不要注明一下这个方法最多只能读取1024字节?
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

34楼这个按说不算
if  exist没有义务为你判断是文件还是目录
不过可以用以下两个办法判断目录
if exist %1\. echo %1是目录
if exist %1\nul echo %1是目录
这两个可以算

35楼内容之前就已经添加了
搜索一下主题的ipconfig
天的白色影子

TOP

  1. ipconfig >a.txt
复制代码
XP系统里面行尾会多出一个CR,Vista、Win7系统里面没有这个问题,这个算不?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. if exist C:\a.txt
复制代码
不能直接判断C:\a.txt是文件还是文件夹,这个算吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 32楼 的帖子

          是哦
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2010-4-20 20:13 发表
又发现一个奇诡的问题
以下代码,不管是否存在a.txt都无法正确运行,把rem 换成其它的命令则可以,或去掉最外面的一对括弧也可以。@echo off
(for /f %%f in (a.txt) do echo.123&rem abc)
pause

因为)成了rem的一部分,所以for前的(就孤立了
例如:
  1. for /f %%f in (a.txt) do echo.123&rem abc&echo.这个不显示
复制代码

[ 本帖最后由 hanyeguxing 于 2010-4-20 20:33 编辑 ]
1

评分人数

    • 随风: 我怎么这都没想到呢。PB + 5
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

我记得 dir *b*.txt

用*x*来匹配含X的文件名好像有BUG 有时会列出一些不含X的文件名  
  具体例子不记得了

TOP

又发现一个奇诡的问题
以下代码,不管是否存在a.txt都无法正确运行,把rem 换成其它的命令则可以,或去掉最外面的一对括弧也可以。
  1. @echo off
  2. (for /f %%f in (a.txt) do echo.123&rem abc)
  3. pause
复制代码
技术问题请到论坛发帖求助!

TOP

问题在于我就是通过这个才认清more逐字分行的原因啊,嘿嘿
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 27楼 的帖子


简单问题复杂化
显示20个空行
这样不更简单吗
for /l %i in (1,1,20) do echo.


逐字分行的意义
不在于分行显示
而在于分行处理
比如下面的代码
  1. for /f %f in ('cmd /u /c echo test^|more') do @echo value=%f
复制代码
在这个意义下
我们通常处理的是单个字符串变量
那么西方字符集的限制就不是什么大问题
至于cmd /u
闲着也是闲着
干嘛不用呢?

[ 本帖最后由 qzwqzw 于 2010-4-20 19:31 编辑 ]
天的白色影子

TOP

返回列表