![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 14:46 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何在批处理文件内返回正在执行的批处理文件的地址 |
| 可打印版本 1,825 / 6 |
| 第1楼 yhsean | 发表于 2005-12-21 18:19 |
| 初级用户 发帖 26 积分 90 | |
|
如何在批处理文件内返回正在执行的批处理文件的地址 假设在D:\HELLOW\有一文件 my.bat
如何在运行 my.bat 时候返回 MY.BAT的地址 D:\HELLOW\my.bat 供MY.BAT使用 |
|
| 第2楼 bagpipe | 发表于 2005-12-21 19:31 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
echo %cd%\my.bat
|
|
| 第3楼 无奈何 | 发表于 2005-12-21 20:03 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
批处理中用 %0 代表批处理自身。
%~f0 扩展到一个完整的路径名。 |
|
| 第4楼 yhsean | 发表于 2005-12-21 20:19 |
| 初级用户 发帖 26 积分 90 | |
|
re bagpipe
兄的代码有局限性,批处理被另一个程序调用,同时被另一个程序将工作目录改为了它自己的工作目录 奈何兄可以说是扶着我走的,简直太感谢了,每进步一次都与奈何和斑竹分不开 在此感谢 |
|
| 第5楼 yhsean | 发表于 2005-12-21 20:27 |
| 初级用户 发帖 26 积分 90 | |
|
以上问题提出的背景是为了一次完成AWK程序,特贴出代码,将AWK脚本置于批处理文本中,无须单独建立AWK脚本
gawk "BEGIN{FS=\"\n\"};!(/gawk/||/:/||/^$/){print $1 }" %~f0 > yh.awk gawk -f yh.awk aa.TXT & del yh.awk&goto END ::AWK脚本定义 BEGIN { FS="\n"} { if ($1!~/R\|/) { if($1!~/T+/){temp = (temp $1 "\n")} } else { # 搜索第一块数字域 域开始值 域跨度值 print match($1,/\|+\|/),RSTART,RLENGTH name=substr($1,RSTART+1,RLENGTH-2) print match($1,/\|\..*Min.*\|/),RSTART,RLENGTH TIME=substr($1,RSTART+1,RLENGTH-2) print TIME sub("TIME",TIME,temp) print temp>name".txt" temp = "" } } ::AWK脚本定义 :END 希望大家发表更好的办法 [ Last edited by yhsean on 2005-12-21 at 21:02 ] |
|
| 第6楼 无奈何 | 发表于 2005-12-21 21:39 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
很高兴的看到咱们 DOS 联盟有了一批 AWK 的爱好者。
to yhsean 你的这个主意真的不错,用 AWK 创建自身需要的脚本。代码可否做一下以修改增加其通用性。 1、将 AWK 脚本设置开始、结束标示,方便解析。 2、调用脚本使用绝对路径 [ Last edited by 无奈何 on 2005-12-21 at 21:42 ] |
|
| 第7楼 yhsean | 发表于 2005-12-22 09:27 |
| 初级用户 发帖 26 积分 90 | |
|
这个问题我研究过,对于"%~f0"中的双引号,将被CMD忽略 “"”%~f0“"”]
关于AWK脚本使用绝对路径,因为CMD脚本运行时是被另一个程序调用,同时被另一个程序将工作目录带到事先无法知道的目录上去,(在这个时候CMD已将这个目录视为当前目录,所以产生的AWK脚本方便的被GAWK找到),不过引用绝对路径,使程序更加符合人的思维习惯(感觉就是可靠) 另外,在引用%~f0参数的时候,最好用一个变量将其保持(色set p=%~f0,因为实际中,可能调用多个bat程序,调用第二个时候,%~f0将被第二个bat程序的位置取代,使得程序引用%~f0出现错误 [ Last edited by yhsean on 2005-12-22 at 12:35 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |