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

[文本处理] for /f不能读取%0表示的自己吗?

把下面的代码中的%0换为物理路径才能执行成功。
  1. @echo off
  2. color 0a
  3. :loop
  4. for /f "skip=5 delims=" %%a in (%0) do %%a
  5. goto loop
  6. :code
  7. echo 0101001110100011111000001110100001010100010000100010000010100001010000011010000
  8. echo 1001101011101011010001100001010000111110000010100000011111111001001010100101011
  9. echo 1011001010010101010011001101001101011010101010100110110010010100110110011011101
  10. echo 0010110110101100101000101010100101010010110101000001011111110100111001101010101
复制代码
还请大家解释下!

[ 本帖最后由 Cameron 于 2008-11-1 16:24 编辑 ]

  这个批处理所在的完整路径带有空格之类的特殊字符吧?把for语句换成一下代码试试:
  1. for /f "usebackq skip=5 delims=" %%a in ("%0") do %%a
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

  1. for /f "usebackq skip=5 delims=" %%a in (`type "%~0"`) do %%a
复制代码

[ 本帖最后由 yslyxqysl 于 2008-11-1 17:09 编辑 ]
论坛标题管理观察员

TOP

桌面运行。
2L结果:系统找不到文件 "C:\Documents
3L结果:0101001110100011111000001110100001010100010000100010000010100001010000011010000
论坛标题管理观察员

TOP

  1. for /f "useback skip=5 delims=" %%a in ("%~f0") do %%a
复制代码
心绪平和,眼藏静谧。

TOP

  1. for /f "skip=5 delims=" %%a in ('type "%~f0"') do %%a
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

5楼、6楼的代码全部成功,基本能看明白,谢谢!
可是为什么直接用%0不行呢?

TOP

1、为什么直接用%0不行呢?
看到usebackq没?还不明白?看for /?

2、为什么"%0"不行呢?
参见:http://bbs.verybat.org/thread-13173-1-1.html
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复楼主:
你如果是在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等命令。。。
心绪平和,眼藏静谧。

TOP

回复 9楼 的帖子

Great work!
建议以后凡是提这个问题的帖子全部锁定,并要求提问者来学习这个帖子^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

2楼粗心了、
for /f "usebackq skip=5 delims=" %%a in ("%~0") do %%a
技术问题请到论坛发帖求助!

TOP

回复 8楼 的帖子

不用usebackq for不能识别“”闭合的文件名吗?
另外,%~0和%~f0等同吗?
for/?看不明白,还请通俗的讲一下o(∩_∩)o...

TOP

回复 12楼 的帖子

同学,你这样的学习方法是不对的

1、8楼给出的链接被你无视了
2、论坛教程也被你无视了,正因为for比较复杂,关于for的教程多于牛毛
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 12楼 的帖子

for /?哪一句不明白?
如果全部不明白,请到“批处理教学&资料”版块阅读教程。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

谢谢大家的回答!
自己花时间测试了一下,终于弄明白了!
学到了不少东西!高兴ing(*^__^*) 嘻嘻……
  /\  
   \ \
    \ \
    /  \
   <===>\
   <    )>
   <===>/
    \  /
    / /  
   / /  
   \/

TOP

返回列表