第 16 楼
发表于 2006-10-21 02:54 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 19年会员 UID 59080
状态 离线
namajm兄在F11中的代码是测试错误的代码还是正确的代码?
我这里测试,没有通过,显示的是"ab",而不是我们想得到的"ab c",不知道咋回事。。
第 17 楼
发表于 2006-10-21 06:15 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
不好意思,我举的例子是想说明那段代码不能正确获取带空格路径中指定层次的文件夹名,当时没有注释清楚,现在已经注释好了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 18 楼
发表于 2006-10-21 06:17 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
14F的代码确实厉害,用到了比较生僻的shift,颇具技巧性,它可能是最具备通用性的了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 19 楼
发表于 2006-10-21 07:03 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 19年会员 UID 59080
状态 离线
呵呵。。。
我一直在思考这个问题:
为什么在11楼的代码不行,而在14楼的代码却可行呢?难道就是这个shift起的作用?也没有明白为什么要循环4次。
第 20 楼
发表于 2006-10-21 07:35 · 中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013 发帖 718 注册 2006-02-18 07:07 20年会员 UID 50550
状态 离线
多看看 <帮助与支持>吧.
不一样的搭配就有不一样的味,这也是脚本存在的原因之一:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set str=c:\ab c\def\gh .exe\
set num=1
for /l %%i in (1,1,%num%) do set "str=!str:*\=!"
echo %str:\= && 2>nul cd %
pause
把最后的cd换成echo就可以逐级显示.
几种方法使用的场合不同,至于孰好孰坏,那就是见仁见智了.
第 21 楼
发表于 2006-10-21 08:39 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
发现 echo %str:\= && 2>nul cd % 一句中,把cd换成任意的命令都能正确执行,对这一句去掉最后几个\分隔的内容的写法百思不得其解,还请3742668解说一二。
另外,echo %str:\= && 2>nul cd %在提取其中的文件夹名的时候,最后一位是空格,在提取文件名的时候没有这个问题,换成 echo %str:\=&& 2>nul cd % 就可以了(注意:两条语句&&前一个有空格,一个没有空格)。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 22 楼
发表于 2006-10-21 08:43 · 中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218 发帖 485 注册 2006-07-21 21:24 19年会员 UID 58987 来自 湖南.娄底
状态 离线
Originally posted by 3742668 at 2006-10-21 07:35:
多看看 <帮助与支持>吧.
不一样的搭配就有不一样的味,这也是脚本存在的原因之一:
几种方法使用的场合不同,至于孰好孰坏,那就是见仁见智了.
同意, 解决问题的方法多种多样, 就看你怎么用了.
第 23 楼
发表于 2006-10-21 09:00 · 中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013 发帖 718 注册 2006-02-18 07:07 20年会员 UID 50550
状态 离线
Originally posted by namejm at 2006-10-21 08:39:
发现 echo %str:\= && 2>nul cd % 一句中,把cd换成任意的命令都能正确执行,对这一句去掉最后几个\分隔的内容的写法百思不得其解,还请37426 ...
记得在那篇讨论加密解密的贴子里就有使用到过类似的方法.
原理很简单,例如:
set "command=set i=3"
echo i的值:%i% & pause
%command%
echo i的值:%i% & pause
参考:
非编译型批处理加密方案与代码 之11F方案。
另外其实最后一种方法还存在一点小问题,获得最后的文件名时可能显示出一行"ECHO 处于打开状态"之类的提示,为了节省代码量,没对它进行处理.
第 24 楼
发表于 2006-10-24 03:32 · 中国 上海 虹口区 电信
初级用户
★★
积分 153 发帖 68 注册 2006-10-12 22:25 19年会员 UID 65507 来自 上海
状态 离线
Originally posted by 3742668 at 2006-10-21 09:00:
记得在那篇讨论加密解密的贴子里就有使用到过类似的方法.
原理很简单,例如:
set "command=set i=3"
echo i的值:%i% & pause
%command%
ech ...
经测试,确实会出现:“ECHO处于打开/关闭状态的提示”,不知道怎么样解决这个问题,经常会碰到这个问题。。。
第 25 楼
发表于 2006-10-24 06:39 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
请问是在什么情况下出现“ECHO处于打开/关闭状态“的提示的?请把测试的路径发出来看一下。估计把 echo %str:\= && 2>nul cd % 修改成 echo. %str:\=&& 2>nul cd % 就可以了(注意:echo后有一个点号)。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 26 楼
发表于 2006-10-24 21:58 · 中国 湖南 娄底 电信
初级用户
★
积分 46 发帖 22 注册 2006-10-24 09:03 19年会员 UID 68024 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正