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

TOP

让我在学习学习

TOP

③ 转义符号:如果要显示%本身时,需要在前面用%来转义。

文章中%符号的第3种用法,只适合批处理文件中(例子那样),在命令行窗口中,%只是一般字符,直接写即可。当然^%这样写也正确。所以转义字符^,它不论在命令行窗口还是批处理文件中,都可以表示转义,既可以转义“<、>、|”等特殊字符,也可以转义“1、a、%”等一般字符。
而%符号在批处理文件中比较特殊,如果要显示%本身,得%%这样写。又如for循环中的变量%I(命令行窗口里)在批处理文件中必须得表示成%%I。
Discuz!代码[fly]飞行的效果[/fly]达不到飞行的效果。

TOP

回复 34# coldsummerwei


    不要那么纠结于这个%,它在不同地方有不同表示,但表示的不是它本身意思,而是其他意思。
    在FOR中表示变量,批处理中用%%a,cmd中用%a。
    在变量中标记变量,如%var%。在有些复杂的变量中,你只需在两边多加%,如echo echo %%abcd%%>>123.txt
    在显示%自身时,要么用转义符^%,要么成双成对%%。
    因为单个%号会被消掉——脱掉,使用时记得要成对使用。
    在一些变量中:call   :calc  %var:~!num!,2%
    表示文件的特定属性,文件名%~n1、文件路径%~dp1等,在FOR中也可以%%~nxa、%~fa。
    计算时取余数,记得有,但没做过。
    其他的也不过如此。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 26# sy78wpl
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "usebackq tokens=1* delims=. " %%a in ("list.txt") do set #%%a=%%b
  3. for %%f in (*.cue) do (
  4. (for /f "usebackq delims=" %%a in ("%%f") do (
  5.         set a=%%a
  6.         set a=!a: =!
  7.         if /i not "!a:~0,11!!a:~-1!"=="TITLE"Track"" (
  8.             echo %%a
  9.         ) else (
  10.             for %%b in (!a:~-3^,2!) do echo     TITLE "%%b.!#%%b!"
  11.         )
  12.     ))>han.ye
  13.     move "han.ye" "%%f"
复制代码
这是我目前看到的最头疼,还看不懂
for /f "usebackq tokens=1* delims=. " %%a in ("list.txt") do set #%%a=%%b
#号是做什么用的??为什么要用usebakq,list.txt并没有空格符号,个人习惯?
   if /i not "!a:~0,11!!a:~-1!"=="TITLE"Track"" 真心没看懂,中间那两个!!号是做什么?title tracker为什么4个引号? 同样的,"%%b.!#%%b!" 也没看懂,应该是个文件名,但#号做什么的?
     for %%b in (!a:~-3^,2!) 为什么要用转意符?
如果这人不是写错了或者为了彰显技术而故意复杂化,那这人真的是个高高高高手。

TOP

这个得收藏!

TOP

本帖最后由 tianya1988 于 2012-8-21 23:18 编辑

回复 36# wodesitanfu
我也是个半桶水,如有错误还请指正,一起来学习
1.
  1. for /f "usebackq tokens=1* delims=. " %%a in ("list.txt") do set #%%a=%%b
复制代码
这个#感觉好像就是当作个普通字符  假设for循环过程中的%%a取得的变量这为abc,那么set #%%a=%%b就表示定义一个变量“#abc”
2.
usebakq么,个人感觉既是习惯也是推荐用法吧
3.
  1. "!a:~0,11!!a:~-1!"=="TITLE"Track""
复制代码
这个不应该看成是两个叹号,而是前后两个“!!”变量引用符,即!a:~0,11!和!a:~-1!,然后把两个字符串连接起来了,假设现在a变量表示字符串“0123456789abcdef”,那么!a:~0,11!表示的是字符串“0123456789ab”,!a:~-1!表示的是字符f,连接起来!a:~0,11!!a:~-1!表示的就是“0123456789abf”这么个字符串。
至于后面的四个引号,你可以把等式两边同时脱去外层引号来看,就是判断左边的字符串,如上面的“0123456789abf”是不是和TITLE"Track"相同
4.
  1. "%%b.!#%%b!"
复制代码
这个应该和第一步定义set #%%a=%%b相关,这时候用到了,要不然开始你看第一个for循环好像没什么意义
5.
  1. for %%b in (!a:~-3^,2!)
复制代码
个人感觉,转义要不要无所谓,但我知道for循环里出现管道命令|一定要用转义符

TOP

相当实用的,谢谢楼主!收下了

TOP

增加了不少的知识

TOP

内容很全面!希望能加上ctrl+字母的那些特殊符号的讲解 那些属于什么?怎么回显空格 删除键有是那个?
看别人的帖子!广集思路!

TOP

for里面引用变量是%%i,但是也有像“echo 变量str的值是:%str%”的变量引用,for里面%%i这样的形式是特例么??

TOP

真心学习了!

TOP

谢谢楼主的分享!

TOP

这段时间对批处理非常感兴趣,正好能用上,谢谢版主

TOP

新手慢慢学习了,

TOP

返回列表