[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我记得 dir *b*.txt

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

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

回复 32楼 的帖子

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

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

  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

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

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

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

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

评分人数

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

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

也来添加个

代码:
  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

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

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

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

TOP

原帖由 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

回复 39楼 的帖子

多余空格的问题已基本确认
应该是CMD预处理括号对()和管道符时插入的
请看以下示例
D:\>(echo.abc) > 1.txt

D:\>echo.abc|more>2.txt

D:\>(echo.abc)|more>3.txt

只有3.txt有空格
而1.txt,2.txt都没有
这说明CMD的预处理在做语句的词法切分时
为了方便以后的预处理识别)和|这些转义字符
而特意在这些字符前后插入一个空格
同时也会把多余的空格去除

这种增减空格的现象
在不含echo off的批处理中可以看到很多

比如以下的用法
  1. (echo test)
  2. (echo.test)
  3. echo test|more
  4. echo.test|more
  5. (echo test)> a.txt
  6. (echo.test) > a.txt
  7. echo.test|more>b.txt
  8. (echo.test)|more>c.txt
复制代码
D:\>(echo test )
test

D:\>(echo.test)
test

D:\>echo test  | more
test


D:\>echo.test | more
test


D:\>(echo test ) 1>a.txt

D:\>(echo.test) 1>a.txt

D:\>echo.test | more1>b.txt

D:\>(echo.test)  | more1>c.txt

[ 本帖最后由 qzwqzw 于 2010-4-21 10:39 编辑 ]
天的白色影子

TOP

顶楼内容里面的findstr /l不一定能够解决汉字“或”的问题,测试环境:XP SP3 Pro CS,测试结果:

C:\Test>type a.txt
我们
他们
123

C:\Test>findstr /l "我们 他们" a.txt

C:\Test>findstr /r "我们 他们" a.txt
我们
他们

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

TOP

findstr 匹配多个中文串的问题比较棘手
目前找不到问题的实质原因
所以我在顶楼也只是含糊其辞
如果有更多的测试和证据
足以让人判断其问题的源头
那么我可以考虑更新一下
天的白色影子

TOP

返回列表