|
darkpiggy
初级用户
 
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『楼 主』:
批处理如何获取当前所在路径信息
使用 LLM 解释/回答一下
各位老大,有问题求教!
是这样的一个问题,比如我先要保存当前的路径,然后切换路径到A盘执行命令,执行完毕后
我需要将路径切换到刚才我保存到的路径,这个批处理该如何写啊?
请各位老大帮帮忙,谢谢啊!
|
|
2005-3-2 00:00 |
|
|
chenhui530
高级用户
   
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
论坛最近不知道为什么很不稳定啊!刚才我写了很详细的一大片没发成功!现在重新给你发来
下次你在求助发帖的时候首先要说明运行环境.还有条件比如说在你知道源路径的情况下直接输入源路径所在的盘就能回到源路径.但是在不知道源路径的情况下,也就是在批处理中执行的时候,如果是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 字符 ... 〈将字符转换成ASCII数字〉
10、STRINGS VAL 数字 ... 〈将数字转换成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 提未字符串 〈对话〉
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... 〈对数字进行+运算〉
37、STRINGS SUB 数字1,数字2... 〈对数字进行-运算〉
38、STRINGS MUL 数字1,数字2... 〈对数字进行×运算〉
39、STRINGS DIV 数字1,数字2... 〈对数字进行÷运算〉
40、STRINGS AND 数字1,数字2... 〈对数字进行“逻辑与”运算〉
41、STRINGS OR 数字1,数字2... 〈对数字进行“逻辑或”运算〉
42、STRINGS NOT 数字1,数字2... 〈对数字进行“逻辑取反”运算〉
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
状态 离线
|
|
2005-3-3 00:00 |
|
|
DOSforever
金牌会员
     
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-3-3 00:00 |
|
|
chenhui530
高级用户
   
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
楼上应该要对症下药才行难道你要楼主换系统啊对于楼主的问题我等下给出你答案由于现在本人在处理程序一段时间内不能重启机器.我想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
状态 离线
|
|
2005-3-3 00:00 |
|
|
darkpiggy
初级用户
 
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
对了,求教dosforever ,4DOS / 4NT是个啥东东,不要鄙视我,我是新手虽然我从96年就开始用电脑了,但是DOS好久没碰了,新东西不太清楚了4DOS / 4NT哪里有下载的,如何使用?给个链接吧,谢谢啊~~~~我是这几天在做一个支持NTFS格式的,可以从NTFS分区挂载ISO的DOS启动盘才对DOS感兴趣的,现在手上项目很紧,我还抽出时间来玩DOS,不容易啊!!!!所以请大家多帮帮我啊~~
|
|
2005-3-3 00:00 |
|
|
darkpiggy
初级用户
 
积分 119
发帖 6
注册 2005-3-1
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
给大家看一下我的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 楼』:
使用 LLM 解释/回答一下
呵呵,你多心了,我怎么会想到鄙视你呢?谁都不可能样样都懂,我也有许多不懂的地方要向别人请教。我们来论坛的目的就是相互请教,相互帮助,共同进步的。我先大概的和你介绍一下:
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 楼』:
使用 LLM 解释/回答一下
真晕啊又没发出去气死我了最近论坛究竟是怎么了啊?
|

http://www.msfans.net/bbs/ |
|
2005-3-4 00:00 |
|
|
chenhui530
高级用户
   
积分 772
发帖 273
注册 2004-10-23
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
楼住看来还没找到答案我看我还是给你答案.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 楼』:
使用 LLM 解释/回答一下
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 |
|