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

回复 15楼 的帖子

问题1:这个我也说不好,只接受了两批文件,都是四段式
问题2:以AG为开头往后的节

TOP

不懂语句汇总

以6L代码为例
1 "delims=" 等号后为空这个不太懂,教程里说是整行内容,取消for的默认分割符。
2 dir/b 这个看help没明白啥意思
3 in()内何时打单引号?
4 =%%~na这一处不懂
5 "!str:~%n%!%%~xa"不明白

烦请高手解答
另外追问一个:这个小程序我原本想用C写的,但感到用C实现此功能好像比较复杂,不如bat来的简单实惠,也不知道是不是这样?

TOP

  1、for /f 语句中,默认以空格和跳格键作为分隔符,并默认只提取第一节字符串;"delims=" 则取消这种默认设置,把整行内容作为一个整体予以提取;
  2、若看不懂帮助,请实地运行代码来测试,其义自现——不要太依赖他人,自己动手测试一次比问别人千百次更有效果;
  3、在for /f 语句中,in ()内有时候打单引号,有时候打双引号,有时候不加任何符号,要看具体情况,简而言之,如果把括号里的字符串作为一个命令语句看待,就要加单引号;如果作为一个字符串来看待,就要加双引号,如果作为一个文件看待,则不加任何符号;如:in ('dir'),则dir表示命令语句;若in ("dir"),则dir仅表示字符串;若in (dir),则dir表示一个文件;
  4、=%%~na 实际上应该是 %%~na,你把语句断错了位置,与set配合使用,表示一个赋值语句,%%~na 中的原型是%%a,%%~na 是for语句中的扩展,表示获取文件名,具体分析请看 for /?
  5、"!str:~%n%!%%~xa"应该分成两部分来看待,一部分是字符串截取语句"!str:~%n%",另一部分是for语句中的扩展用法"%%~xa",第一部分中的%n%表示一个数值,整体意思是提取%str%中第%n%个之后的所有字符串,其中感叹号对涉及到了变量延迟的用法,具体分析请在教学区搜索set教程和变量延迟教程;第二部分与第4点的解释类似,它是获取文件的后缀名(包括点号),具体用法请看 for /?

  对于文件改名,bat用起来非常方便,无需动用高级语言来编程。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

基本上懂了,%%~na是保留文件名,%%~xa是保留文件后缀,"!str:~%n%!"是变量延迟的用法,显示的就是复合语句中即时得到的值,str:~%n%则是取用户输入变量n位后字符。
'dir/b *.seq *.ab1'是一条命令,把相关文件显示出来,每个文件名占一行,for循环在这里是以cmd行为单位元素执行do的,是这样吗

TOP

  基本上正确,不过 str:~%n% 的原型为 %str:~x,y%。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

返回列表