是哦,楼主想要得到的结果有和用意,是为何程序铺底。作者: 紫狐 时间: 2005-6-2 16:19 标题: [求助] batch 的超级难题, 请大家不吝赐教 用cd可以得到bat的路径,但是无法传递给其它,除非存到文件,再用第三方软件读取,不过这样好麻烦。作者: 我是神仙 时间: 2005-6-11 15:58 标题: [求助] batch 的超级难题, 请大家不吝赐教 98就是麻烦.
在2000或XP里就简单了,echo %~f0就搞定了.作者: palser 时间: 2005-6-22 10:41 标题: [求助] batch 的超级难题, 请大家不吝赐教 98和DOS下批处理的所在路径无非是几种情况:
1、当前盘当前路径;
2、命令行指定的路径;
3、%path%指定路径之一;
可以对以上情况分别判定:
if exist %0.bat cd
:: 存在于当前路径
if exist %0 echo %0
:: 存在于命令行指定的路径
for %%p in (%path%) do if exist %%p.\%0.bat echo %%p
for %%p in (%path%) do if exist %%p.\%0 echo %%p
:: 存在于%path%指定的路径
以上的程序存在个小问题,就是带扩展名运行当前路径下的批处理或者不带扩展名运行指定路径下的批处理时,程序会判断错误,因为一般人很少这样使用,所以可以忽略。无法忽略时,可以使用find检查%0是否含有路径特有的反斜线。
echo %0|find "\">nul
if errorlevel 1 if exist %0.bat cd
if errorlevel 1 if exist %0 cd
:: 存在于当前路径
if not errorlevel 1 if exist %0.bat echo %0
if not errorlevel 1 if exist %0 echo %0
:: 存在于命令行指定的路径 作者: Brglng 时间: 2005-6-22 13:57 标题: [求助] batch 的超级难题, 请大家不吝赐教 用dir /a /s不知道行不行作者: palser 时间: 2005-6-23 09:06 标题: [求助] batch 的超级难题, 请大家不吝赐教 Re Brglng:
用 dir /a /s 首先有低效率的问题,其次它还会牵涉到分区盘符遍历的问题,另外这也浪费了系统的许多资源。
Re mactable:
另外问题中还有一个相对路径转绝对路径的子问题,这可以使用 dir 来解决,假设包括文件名的完整相对路径已设置到变量 %mypath% 中,此时
dir %mypath%|find " Directory of "> _convpth.bat
echo set convpath=%%2>Directory.bat
call _convpth.bat
echo My path:%convpath%
for %%f in (_convpth.bat* Directory.bat*) do del %%f
注意:此程序需要运行在英文代码页的命令行环境下,如果路径中含有空格,则需要对程序进行进一步改进。