标题: [文本处理] for /f不能读取%0表示的自己吗? [打印本页]
作者: Cameron 时间: 2008-11-1 16:14 标题: for /f不能读取%0表示的自己吗?
把下面的代码中的%0换为物理路径才能执行成功。- @echo off
- color 0a
- :loop
- for /f "skip=5 delims=" %%a in (%0) do %%a
- goto loop
- :code
- echo 0101001110100011111000001110100001010100010000100010000010100001010000011010000
- echo 1001101011101011010001100001010000111110000010100000011111111001001010100101011
- echo 1011001010010101010011001101001101011010101010100110110010010100110110011011101
- echo 0010110110101100101000101010100101010010110101000001011111110100111001101010101
复制代码
还请大家解释下!
[ 本帖最后由 Cameron 于 2008-11-1 16:24 编辑 ]
作者: namejm 时间: 2008-11-1 16:57
这个批处理所在的完整路径带有空格之类的特殊字符吧?把for语句换成一下代码试试:- for /f "usebackq skip=5 delims=" %%a in ("%0") do %%a
复制代码
作者: yslyxqysl 时间: 2008-11-1 17:01
- for /f "usebackq skip=5 delims=" %%a in (`type "%~0"`) do %%a
复制代码
[ 本帖最后由 yslyxqysl 于 2008-11-1 17:09 编辑 ]
作者: yslyxqysl 时间: 2008-11-1 17:10
桌面运行。
2L结果:系统找不到文件 "C:\Documents
3L结果:0101001110100011111000001110100001010100010000100010000010100001010000011010000
作者: pusofalse 时间: 2008-11-1 17:37
- for /f "useback skip=5 delims=" %%a in ("%~f0") do %%a
复制代码
作者: Batcher 时间: 2008-11-1 17:54
- for /f "skip=5 delims=" %%a in ('type "%~f0"') do %%a
复制代码
作者: Cameron 时间: 2008-11-1 19:00
5楼、6楼的代码全部成功,基本能看明白,谢谢!
可是为什么直接用%0不行呢?
作者: zqz0012005 时间: 2008-11-1 21:17
1、为什么直接用%0不行呢?
看到usebackq没?还不明白?看for /?
2、为什么"%0"不行呢?
参见:http://bbs.verybat.org/thread-13173-1-1.html
作者: pusofalse 时间: 2008-11-1 23:00
回复楼主:
你如果是在CMD中输入的批处理名字,那么%0只会扩展为你输入的名字,并不包含全路径,你输入的是什么,%0就会扩展为什么。
你如果是双击运行,那么%0会是自身的全路径,如果自身所在绝对路径中含有空格,%0会自动在路径首尾加上引号""闭合自身。例:如果你的批处理是放在了一个c:\te st中(路径含空格),批处理名字叫a.bat。如果你双击运行,"%0" 实质会扩展为""c:\te st\a.bat""--首尾各2个引号--错误的格式。
如果你在CMD中输入a运行,那么type %0实质是type a,目录中没有以a命名的文件,所以出错。
%~f0 则是扩展为一个完全合格的包含自身路径+文件名+扩展名的字串。
剩下的就是for如何工作的问题了。。。建议重温call、for等命令。。。
作者: Batcher 时间: 2008-11-2 10:35 标题: 回复 9楼 的帖子
Great work!
建议以后凡是提这个问题的帖子全部锁定,并要求提问者来学习这个帖子^_^
作者: 随风 时间: 2008-11-2 18:16
2楼粗心了、
for /f "usebackq skip=5 delims=" %%a in ("%~0") do %%a
作者: Cameron 时间: 2008-11-2 20:37 标题: 回复 8楼 的帖子
不用usebackq for不能识别“”闭合的文件名吗?
另外,%~0和%~f0等同吗?
for/?看不明白,还请通俗的讲一下o(∩_∩)o...
作者: zqz0012005 时间: 2008-11-2 21:02 标题: 回复 12楼 的帖子
同学,你这样的学习方法是不对的
1、8楼给出的链接被你无视了
2、论坛教程也被你无视了,正因为for比较复杂,关于for的教程多于牛毛
作者: Batcher 时间: 2008-11-3 00:33 标题: 回复 12楼 的帖子
for /?哪一句不明白?
如果全部不明白,请到“批处理教学&资料”版块阅读教程。
作者: Cameron 时间: 2008-11-6 16:54
谢谢大家的回答!
自己花时间测试了一下,终于弄明白了!
学到了不少东西!高兴ing(*^__^*) 嘻嘻……
/\
\ \
\ \
/ \
<===>\
< )>
<===>/
\ /
/ /
/ /
\/
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |