|
darkpiggy
初级用户
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『楼 主』:
批处理如何获取当前所在路径信息
各位老大,有问题求教!
是这样的一个问题,比如我先要保存当前的路径,然后切换路径到A盘执行命令,执行完毕后
我需要将路径切换到刚才我保存到的路径,这个批处理该如何写啊?
请各位老大帮帮忙,谢谢啊!
|
|
2005-3-2 00:00 |
|
|
chenhui530
高级用户
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第
2 楼』:
论坛最近不知道为什么很不稳定啊!刚才我写了很详细的一大片没发成功!现在重新给你发来
下次你在求助发帖的时候首先要说明运行环境.还有条件比如说在你知道源路径的情况下直接输入源路径所在的盘就能回到源路径.但是在不知道源路径的情况下,也就是在批处理中执行的时候,如果是NT以上的操作系统的话可以使用下面代码:set a="%cd%"
for %%a in (%a%) do set b=%%~da
for %%b in (%a%) do set c=%%~npb
::你切换盘符后运行的代码
...
::你需要返回源路径的代码
%b%
cd\
cd %c%
如果是在纯DOS或者是在98的DOS下的话可以使用第三放工具strings.com在本论坛软件站可以下载到.由于本人还有事情不能切换到DOS下给你求证.所以给你strings.com的一些用法希望对你有用,自己也动动手也好.1.STRINGS [目标变量=]LEFT 源字符串 要取的字符数量 〈从左边取源字符串的指定字符数量〉
2.STRINGS [目标变量=]RIGHT 源字符串 要取的字符数量 〈从右边取源字符串的指定字符数量〉
3.STRINGS [目标变量=]MID 源字符串 起止数,终止数 〈从中央取源字符串〉
4.STRINGS [目标变量=]LENGTH 源字符串 〈返回源字符串的字符长度〉
5.STRINGS [目标变量=]FIND 源字符串 字符 〈从源字符中查找指定的字符〉
6.STRINGS [目标变量=]FINDC 源字符串 字符 〈从源字符中查找指定的字符,区分大小写〉
7.STRINGS [目标变量=]LOWER 源字符串 〈将源字符串中的大写字母转换成小写字母〉
8.STRINGS [目标变量=]UPPER 源字符串 〈将源字符串中的小写字母转换成大写字母〉
9.STRINGS [目标变量=]CHAR 字符 [字符1] [字符2]... 〈将字符转换成ASCII数字〉
10、STRINGS [目标变量=]VAL 数字 [数字1] [数字2]... 〈将数字转换成ASCII字符〉
11、STRINGS [目标变量=]FILEDRIVE 文件名 〈返回文件名所在的盘符〉
12、STRINGS [目标变量=]FILEDIR 文件名 〈返回文件名所在的目录〉
13、STRINGS [目标变量=]FILENAME 源文件名 〈返回源文件名的文件名,不要扩展名〉
14、STRINGS [目标变量=]FILEEXT 源文件名 〈只返回源文件名的扩展名〉
15、STRINGS [目标变量=]ADDCOMMAS 数字 〈将数字每隔三位用逗号隔开〉
16、STRINGS [目标变量=]REPEAT 重复多少,字符或数字 〈将字符或数字进行指定的重复〉
17、STRINGS [目标变量=]READ 文件名,行数 〈读取文件中指定行数的内容〉
18、STRINGS [目标变量=]WRITE 文件名,字符 〈将字符追加到文件中〉
19、STRINGS [目标变量=]FILESIZE 文件名 〈返回文件的大小〉
20、STRINGS [目标变量=]LINESIZE 文件名 〈返回文件内容的总行数〉
21、STRINGS [目标变量=]TRUENAME 文件名 〈返回文件的完整路径〉
22、STRINGS [目标变量=]FILEDATE 文件名 〈返回文件的修改日期〉
23、STRINGS [目标变量=]FILETIME 文件名 〈返回文件的修改时间〉
24、STRINGS [目标变量=]VER 〈返回当前系统的DOS版本号〉
25、STRINGS [目标变量=]ASK 提未字符串[,最大输入数][,1=*显示 2=不显示] 〈对话〉
26、STRINGS [目标变量=]INWIN 〈如果在WINDOWS中的DOS窗口中运行则返回1〉
27、STRINGS [目标变量=]ENVFREE 〈返回环境变量空间的空闲字节数〉
28、STRINGS [目标变量=]ENVSIZE 〈返回环境变量空间的总共大小〉
29、STRINGS [目标变量=]TRUEVER 〈返回当前DOS的真实版本号〉
30、STRINGS [目标变量=]FILES 〈返回当前同时访问的文件数量〉
31、STRINGS [目标变量=]LASTDRIVE 〈返回当前系统可以访问最后有效的驱动器字母〉
32、STRINGS [目标变量=]CODEPAGE 〈返回当前系统活动的长文件代码页〉
33、STRINGS [目标变量=]COUNTRY 〈返回当前系统设置的国家代码〉
34、STRINGS [目标变量=]BIOSDATE 〈返回BIOS出厂的日期〉
35、STRINGS [目标变量=]GETKEY 〈返回按键的ASCII代码〉
36、STRINGS [目标变量=]ADD 数字1,数字2[,数字3]... 〈对数字进行+运算〉
37、STRINGS [目标变量=]SUB 数字1,数字2[,数字3]... 〈对数字进行-运算〉
38、STRINGS [目标变量=]MUL 数字1,数字2[,数字3]... 〈对数字进行×运算〉
39、STRINGS [目标变量=]DIV 数字1,数字2[,数字3]... 〈对数字进行÷运算〉
40、STRINGS [目标变量=]AND 数字1,数字2[,数字3]... 〈对数字进行“逻辑与”运算〉
41、STRINGS [目标变量=]OR 数字1,数字2[,数字3]... 〈对数字进行“逻辑或”运算〉
42、STRINGS [目标变量=]NOT 数字1,数字2[,数字3]... 〈对数字进行“逻辑取反”运算〉
43、STRINGS [目标变量=]MEMTOTAL 〈返回系统总共的常规内存大小〉
44、STRINGS [目标变量=]MEMFREE 〈返回系统空闲的常规内存大小〉
45、STRINGS [目标变量=]XMSTOTAL 〈返回系统总共的扩展内存大小〉
46、STRINGS [目标变量=]XMSFREE 〈返回系统空闲的扩民内存大小〉
47、STRINGS [目标变量=]XMSVER 〈返回当前扩展内存使用的驱动程序的版本号〉
48、STRINGS [目标变量=]EMSTOTAL 〈返回系统总共的扩充内存大小〉
49、STRINGS [目标变量=]EMSFREE 〈返回系统空闲的扩充内存大小〉
50、STRINGS [目标变量=]EMSVER 〈返回当前扩充内存使用的驱动程序的版本号〉
51、STRINGS [目标变量=]STRINGSVER 〈返回STRINGS的版本号〉
此帖被 +8 点积分 点击查看详情 评分人:【 bjsh 】 | 分数: +8 | 时间:2007-5-6 10:14 |
|
|
http://www.msfans.net/bbs/ |
|
2005-3-2 00:00 |
|
|
darkpiggy
初级用户
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『第
3 楼』:
谢谢回复!
可是在strings.com的函数里,没有获取当前路径的啊,这个如何处理呢?
|
|
2005-3-3 00:00 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-3-3 00:00 |
|
|
chenhui530
高级用户
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第
5 楼』:
楼上应该要对症下药才行难道你要楼主换系统啊对于楼主的问题我等下给出你答案由于现在本人在处理程序一段时间内不能重启机器.我想strings.com应该可以完成你的要求的
|
http://www.msfans.net/bbs/ |
|
2005-3-3 00:00 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-3-3 00:00 |
|
|
darkpiggy
初级用户
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『第
7 楼』:
如果DOS里有如bash的shell的话,我睡着了都会笑醒的
|
|
2005-3-3 00:00 |
|
|
darkpiggy
初级用户
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『第
8 楼』:
对了,求教dosforever ,4DOS / 4NT是个啥东东,不要鄙视我,我是新手虽然我从96年就开始用电脑了,但是DOS好久没碰了,新东西不太清楚了4DOS / 4NT哪里有下载的,如何使用?给个链接吧,谢谢啊~~~~我是这几天在做一个支持NTFS格式的,可以从NTFS分区挂载ISO的DOS启动盘才对DOS感兴趣的,现在手上项目很紧,我还抽出时间来玩DOS,不容易啊!!!!所以请大家多帮帮我啊~~[em06]
|
|
2005-3-3 00:00 |
|
|
darkpiggy
初级用户
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『第
9 楼』:
给大家看一下我的mount.bat文件吧,还有问题需要解决,就是如何判断一个盘符已经被占用?代码里边这一句肯定是错的if exist "%2" goto drvexist,这个如何修改呢?谢谢~~
@echo off
if "%1" == "" goto use
if "%2" == "" goto use
if not exist "%1" goto noexist
if exist "%2" goto drvexist
A:
LH Smartdrv 4088 4088 >NUL
SHSUCDHD /F:%1 >NUL
SHSUCDX /D:SHSU-CDH,%2 >NUL
cls
ECHO,
ECHO 【ISO光盘镜像文件安装向导】
%2
DIR/W
ECHO,
ECHO ISO光盘镜像文件已经安装...
ECHO,
goto end
:noexist
echo 文件 %1 不存在,请重新指定镜像文件!
goto end
:use
echo 使用方法: mount 映像文件名 驱动器号
goto end
:drvexist
echo 驱动器名称 %2 已经被使用,请重新指定驱动器名称!
goto end
:end
|
|
2005-3-3 00:00 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『第
10 楼』:
呵呵,你多心了,我怎么会想到鄙视你呢?谁都不可能样样都懂,我也有许多不懂的地方要向别人请教。我们来论坛的目的就是相互请教,相互帮助,共同进步的。我先大概的和你介绍一下:
4DOS / 4NT 是 JP Software 公司出品的命令解释器,也就是 OS Shell 。当然,我认为只是在纯 DOS 下作为 Shell 使用,在 Windows 下应该看作是一个命令行环境。其实它也不是什么新东西,只是你以前没有注意到罢了。我最早接触 4DOS 是在 Norton 8.0 中所带的 NDOS ,实际上就是 Norton 买了 JP Software 的 4DOS 重命名为 NDOS ,这就和 Microsoft 买了 Norton 的 speedisk 叫作 defrag 一样的道理。最初的 4DOS 命令解释器只有 DOS 环境下的 4DOS.COM (尽管是 .COM,实际上是 .EXE 结构的文件,我想大概是为了保持传统才命名为 .COM的吧),后来随着 Windows 的流行, JP Software 又推出了 Windows 环境下的 4DOS —— 叫作 4NT ,不要被它的名字所迷惑,以为只能在 NT 下使用。它又分为 ASCII 版和 Unicode 版,前者是用于 Win 98/98SE/ME 的,后者是用于 Win NT/2000/XP/2003 的。当然 DOS 下的 4DOS 也可以在 Win9X 下使用,在 NT 系列下我没用过,不清楚,估计运行还是可以运行的,只是某些命令不能正常使用。现在 JP Software 已经放弃了 DOS 下 4DOS 的版权,大家可以 FREE 使用了!关于我对 4DOS 家族的其它简单介绍和它的下载地址你可以先看一下这里:
http://www.cn-dos.net/forum/viewthread.php?tid=15111
和这里:
http://www.cn-dos.net/forum/viewthread.php?tid=15214
权威、全面的介绍那当然是它的官方网站了。
接下来我们来讨论一下你的BATCH问题:
你说的“从NTFS分区挂载ISO的DOS启动盘”我从来没用过,不怕各位笑话,我连ISO文件都没用过,根据你提供的原始文件和我的理解来看,你是从A盘执行SHSUCDHD把ISO文件映射为一个光驱,然后再用SHSUCDX把光驱映射为一个逻辑盘符,然后就转到新生成的逻辑盘上,再给大家看看,“瞧,我已经在新逻辑盘上列文件了。”是不是这意思?假如是的话,我还有几点疑问:为什么你非要到A盘上去执行Smartdrv、SHSUCDHD、SHSUCDX?难道这三个文件和ISO文件放到硬盘上就不能执行吗?比如:
c:\windows\command\Smartdrv 32768
c:\windows\command\SHSUCDHD /F:%1 >NUL
c:\windows\command\SHSUCDX /D:SHSU-CDH,%2 >NUL
我想先把我的问题搞清楚才能作下一步讨论。还有, Smartdrv 不需要 LH,只要你有足够的 UMB 它自己就能够 LH,当然你 LH 它也不会报错。在第一次启动 Smartdrv 的时候,如果你不想看到什么信息也不需要用 >NUL 的方法,因为 Smartdrv 在第一次启动的时候,缺省的就是没有任何提示信息,你要它有提示信息还要加 /V 参数。如果你的内存足够大比如有64M以上的话,不妨把 Smartdrv 的缓存区域开得大一点,反正不用也是浪费。
修正链接
[ Last edited by DOSforever on 2008-6-4 at 03:49 AM ]
此帖被 +8 点积分 点击查看详情 评分人:【 bjsh 】 | 分数: +8 | 时间:2007-5-6 10:15 |
|
|
DOS倒下了,但永远不死
DOS NEVER DIES !
投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187
本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747 |
|
2005-3-3 00:00 |
|
|
chenhui530
高级用户
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第
11 楼』:
真晕啊又没发出去气死我了最近论坛究竟是怎么了啊?
|
http://www.msfans.net/bbs/ |
|
2005-3-4 00:00 |
|
|
chenhui530
高级用户
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第
12 楼』:
楼住看来还没找到答案我看我还是给你答案.strings a=filedrive pp.bat
strings b=filedir pp.bat
::strings x=filename pp.bat 如果你需要知道原文件的完整路径这个必须你只需要去掉前面的"::"
::strings c=fileext pp.bat 如果你需要知道原文件的完整路径这个必须你只需要去掉前面的"::"
set ypath=%a%%b%
::set d=%a%%b%\%x%.%c% 这是完整的路径
::你切换盘符后运行的代码
...
::你需要返回源路径的代码
%a%
cd\
cd %ypath%
|
http://www.msfans.net/bbs/ |
|
2005-3-4 00:00 |
|
|
bush
银牌会员
积分 2165
发帖 730
注册 2004-4-21
状态 离线
|
|
2005-3-4 00:00 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
14 楼』:
Re All:
关于工具的选择大家讨论了这么多,其实这不过是个人习惯和使用场合的不同而造成的分歧,我个人编写批处理便很少使用第三方工具,原因无它,主要是因为“将看似不可能的事情变为可能”可以产生一种无与伦比的快乐。下面给出一个不依赖环境的批处理示例吧,在WinXP/DOS7测试通过。
@echo off
echo Current path is:
cd
pause
echo exit | %comspec% /k prompt $N:$_cd $P$_ | find "exit" /v > %temp%.\~retpath.bat
c:
cd\windows
echo Current path is:
cd
pause
for %%c in (call del) do %%c %temp%.\~retpath.bat
echo Current path is:
cd [ Last edited by willsort on 2005-10-30 at 13:55 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-3-4 00:00 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-3-7 00:00 |
|